From 2bafd6d31af35a825506b3053ae4a80698fce9c4 Mon Sep 17 00:00:00 2001 From: Joe Pegler Date: Mon, 25 Mar 2024 16:49:05 +0000 Subject: [PATCH 1/2] chore: sma-747 tsdoc fixes (#34) --- .github/workflows/docs.yml | 2 +- README.md | 12 +++--- src/accounts/actions/index.ts | 6 +++ src/accounts/actions/sendTransaction.ts | 1 - src/accounts/actions/sendTransactions.ts | 11 +---- src/accounts/actions/sendUserOperation.ts | 4 +- .../biconomyV2/signerToSmartAccount.ts | 10 ----- src/accounts/index.ts | 6 +-- src/bundler/actions/index.ts | 8 ++++ src/bundler/actions/sendUserOperation.ts | 9 ++-- src/bundler/index.ts | 8 ++-- src/bundler/utils/helpers.ts | 6 +-- src/bundler/utils/types.ts | 16 ------- src/client/createSmartAccountClient.ts | 8 +++- src/client/decorators/bundler.ts | 16 +++---- src/client/decorators/index.ts | 3 ++ src/client/decorators/smartAccount.ts | 8 +++- src/client/index.ts | 2 + src/client/utils/types.ts | 42 ++++++++++++++++++- src/errors/index.ts | 2 + src/index.ts | 11 ++--- src/modules/index.ts | 9 +--- src/paymaster/index.ts | 5 +-- 23 files changed, 118 insertions(+), 87 deletions(-) create mode 100644 src/accounts/actions/index.ts create mode 100644 src/bundler/actions/index.ts create mode 100644 src/client/decorators/index.ts create mode 100644 src/errors/index.ts diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index aef00342e..6e2e2a63f 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -3,7 +3,7 @@ on: workflow_dispatch: push: branches: - - main + - develop permissions: contents: write diff --git a/README.md b/README.md index c199e0c31..c7ea173bc 100644 --- a/README.md +++ b/README.md @@ -8,16 +8,16 @@ This repository serves as a comprehensive foundation for typescript account abst ## ๐Ÿ“š Table of Contents -- [SDK ๐Ÿš€](#sdk-๐Ÿš€) - - [๐Ÿ“š Table of Contents](#-๐Ÿ“š-table-of-contents) +- [SDK ๐Ÿš€](#sdk-) + - [๐Ÿ“š Table of Contents](#-table-of-contents) - [Getting Started](#getting-started) - [Prerequisites](#prerequisites) - [Installation](#installation) - - [๐Ÿ› ๏ธ Essential Scripts](#-๐Ÿ› ๏ธ-essential-scripts) - - [๐Ÿงช Run Tests](#-๐Ÿงช-run-tests) - - [๐Ÿ“Š Coverage Report](#-๐Ÿ“Š-coverage-report) + - [๐Ÿ› ๏ธ Essential Scripts](#๏ธ-essential-scripts) + - [๐Ÿงช Run Tests](#-run-tests) + - [๐Ÿ“Š Coverage Report](#-coverage-report) - [๐Ÿ“„ Documentation](https://bcnmy.github.io/sdk) - - [๐ŸŽจ Lint Code](#-๐Ÿ–Œ๏ธ-auto-fix-linting-issues) + - [๐ŸŽจ Lint Code](#-lint-code) - [๐Ÿ–Œ๏ธ Auto-fix Linting Issues](#๏ธ-auto-fix-linting-issues) - [Documentation and Resources](#-documentation-and-resources) - [License](#license) diff --git a/src/accounts/actions/index.ts b/src/accounts/actions/index.ts new file mode 100644 index 000000000..f85767684 --- /dev/null +++ b/src/accounts/actions/index.ts @@ -0,0 +1,6 @@ +export * from "./prepareUserOperationRequest" +export * from "./sendTransaction" +export * from "./sendUserOperation" +export * from "./sendTransactions" +export * from "./signMessage" +export * from "./signTypedData" diff --git a/src/accounts/actions/sendTransaction.ts b/src/accounts/actions/sendTransaction.ts index 91ffddf2a..a13eda296 100644 --- a/src/accounts/actions/sendTransaction.ts +++ b/src/accounts/actions/sendTransaction.ts @@ -29,7 +29,6 @@ export type SendTransactionWithPaymasterParameters< * - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction) * * @param client - Client to use - * @param parameters - {@link SendTransactionParameters} * @returns The [Transaction](https://viem.sh/docs/glossary/terms.html#transaction) hash. * * @example diff --git a/src/accounts/actions/sendTransactions.ts b/src/accounts/actions/sendTransactions.ts index 3849a63ac..6ca513d6d 100644 --- a/src/accounts/actions/sendTransactions.ts +++ b/src/accounts/actions/sendTransactions.ts @@ -1,12 +1,4 @@ -import type { - Address, - Chain, - Client, - Hash, - Hex, - SendTransactionParameters, - Transport -} from "viem" +import type { Address, Chain, Client, Hash, Hex, Transport } from "viem" import type { Prettify } from "viem/chains" import { waitForUserOperationReceipt } from "../../bundler/actions/waitForUserOperationReceipt" import { getAction, parseAccount } from "../utils/helpers" @@ -33,7 +25,6 @@ export type SendTransactionsWithPaymasterParameters< * This function also allows you to sponsor this transaction if sender is a smartAccount * * @param client - Client to use - * @param parameters - {@link SendTransactionParameters} * @returns The [Transaction](https://viem.sh/docs/glossary/terms.html#transaction) hash. * * @example diff --git a/src/accounts/actions/sendUserOperation.ts b/src/accounts/actions/sendUserOperation.ts index caef85a06..a670d716a 100644 --- a/src/accounts/actions/sendUserOperation.ts +++ b/src/accounts/actions/sendUserOperation.ts @@ -1,6 +1,6 @@ import type { Chain, Client, Hash, Transport } from "viem" import type { PartialBy, Prettify } from "viem/chains" -import { sendUserOperation as sendUserOperationBundler } from "../../bundler/index" +import { sendUserOperationWithBundler } from "../../bundler" import { getAction, parseAccount } from "../utils/helpers" import type { GetAccountParameter, @@ -51,7 +51,7 @@ export async function sendUserOperation< userOperation as UserOperationStruct ) - return sendUserOperationBundler(client, { + return sendUserOperationWithBundler(client, { userOperation: userOperation as UserOperationStruct }) } diff --git a/src/accounts/biconomyV2/signerToSmartAccount.ts b/src/accounts/biconomyV2/signerToSmartAccount.ts index 745c8e6f1..2c2c7175d 100644 --- a/src/accounts/biconomyV2/signerToSmartAccount.ts +++ b/src/accounts/biconomyV2/signerToSmartAccount.ts @@ -202,16 +202,6 @@ export type SignerToBiconomySmartAccountParameters< activeValidationModule?: BaseValidationModule }> -/** - * Build a Biconomy modular smart account from a private key, that use the ECDSA signer behind the scene - * @param client - * @param privateKey - * @param index - * @param factoryAddress - * @param accountLogicAddress - * @param defaultValidationModule - * @param activeValidationModule - */ export async function signerToSmartAccount< TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, diff --git a/src/accounts/index.ts b/src/accounts/index.ts index 15819102b..dfaa6fe7c 100644 --- a/src/accounts/index.ts +++ b/src/accounts/index.ts @@ -1,3 +1,3 @@ -export { signerToSmartAccount } from "./biconomyV2/signerToSmartAccount.js" - -export { type UserOperationStruct } from "./utils/types.js" +export * from "./biconomyV2/signerToSmartAccount.js" +export * from "./utils/types" +export * from "./actions" diff --git a/src/bundler/actions/index.ts b/src/bundler/actions/index.ts new file mode 100644 index 000000000..3896ace58 --- /dev/null +++ b/src/bundler/actions/index.ts @@ -0,0 +1,8 @@ +export * from "./chainId" +export * from "./estimateUserOperationGas" +export * from "./getGasFeeValues" +export * from "./getUserOperationByHash" +export * from "./getUserOperationReceipt" +export * from "./getUserOperationStatus" +export * from "./waitForUserOperationReceipt" +export { sendUserOperation as sendUserOperationWithBundler } from "./sendUserOperation" // Explicitly re-export the necessary member diff --git a/src/bundler/actions/sendUserOperation.ts b/src/bundler/actions/sendUserOperation.ts index 80bfb6c9a..c8db43503 100644 --- a/src/bundler/actions/sendUserOperation.ts +++ b/src/bundler/actions/sendUserOperation.ts @@ -1,15 +1,14 @@ import type { Account, Chain, Client, Hash, Transport } from "viem" import type { BaseError } from "viem" import type { Prettify } from "viem/chains" -import type { UserOperationStruct } from "../../accounts" +import type { + SendUserOperationParameters, + UserOperationStruct +} from "../../accounts" import { ENTRYPOINT_ADDRESS_V06 } from "../../accounts/utils/constants" import { getSendUserOperationError } from "../../errors/getters" import type { BundlerRpcSchema } from "../utils/types" -export type SendUserOperationParameters = { - userOperation: UserOperationStruct -} - /** * Sends user operation to the bundler * diff --git a/src/bundler/index.ts b/src/bundler/index.ts index 97c607f72..0d8a3808b 100644 --- a/src/bundler/index.ts +++ b/src/bundler/index.ts @@ -1,4 +1,4 @@ -export { sendUserOperation } from "./actions/sendUserOperation.js" -export { estimateUserOperationGas } from "./actions/estimateUserOperationGas.js" -export { extractChainIdFromBundlerUrl } from "./utils/helpers.js" -export { createBundlerClient } from "./createBundlerClient.js" +export * from "./utils/helpers.js" +export * from "./createBundlerClient.js" +export * from "./utils/types" +export * from "./actions" diff --git a/src/bundler/utils/helpers.ts b/src/bundler/utils/helpers.ts index e89642605..1e5b3466f 100644 --- a/src/bundler/utils/helpers.ts +++ b/src/bundler/utils/helpers.ts @@ -25,8 +25,8 @@ export const transactionReceiptStatus = { } as const // biome-ignore lint/suspicious/noExplicitAny: it's a recursive function, so it's hard to type -type Callback = ((...args: any[]) => any) | undefined -type Callbacks = Record +export type Callback = ((...args: any[]) => any) | undefined +export type Callbacks = Record export const listenersCache = /*#__PURE__*/ new Map< string, @@ -34,7 +34,7 @@ export const listenersCache = /*#__PURE__*/ new Map< >() export const cleanupCache = /*#__PURE__*/ new Map void>() -type EmitFunction = ( +export type EmitFunction = ( emit: TCallbacks // biome-ignore lint/suspicious/noConfusingVoidType: ) => MaybePromise void)> diff --git a/src/bundler/utils/types.ts b/src/bundler/utils/types.ts index 7e6fd7fb1..815842bea 100644 --- a/src/bundler/utils/types.ts +++ b/src/bundler/utils/types.ts @@ -85,18 +85,6 @@ export type EstimateUserOperationGasParameters = { userOperation: UserOperationStruct } -export type WaitForUserOperationReceiptParameters = { - /** The hash of the transaction. */ - hash: Hash - /** - * Polling frequency (in ms). Defaults to the client's pollingInterval config. - * @default client.pollingInterval - */ - pollingInterval?: number - /** Optional timeout (in milliseconds) to wait before stopping polling. */ - timeout?: number -} - export type TStatus = "success" | "reverted" export type UserOpReceipt = { @@ -122,10 +110,6 @@ export type UserOpReceipt = { receipt: any } -export type GetUserOperationByHashParameters = { - hash: Hash -} - export type GetGasFeeValuesReturnType = GasFeeValues export type GasFeeValues = { diff --git a/src/client/createSmartAccountClient.ts b/src/client/createSmartAccountClient.ts index 4814b7c39..8403e950e 100644 --- a/src/client/createSmartAccountClient.ts +++ b/src/client/createSmartAccountClient.ts @@ -1,4 +1,10 @@ -import { type Chain, type Client, type Transport, createClient } from "viem" +import { + type Chain, + type Client, + type Transport, + type WalletClientConfig, + createClient +} from "viem" import type { Prettify } from "viem/chains" import type { SmartAccount } from "../accounts/utils/types.js" diff --git a/src/client/decorators/bundler.ts b/src/client/decorators/bundler.ts index f23b79332..da3e5036f 100644 --- a/src/client/decorators/bundler.ts +++ b/src/client/decorators/bundler.ts @@ -1,11 +1,13 @@ import type { Client, Hash } from "viem" import type { Prettify } from "viem/chains" +import type { SendUserOperationParameters } from "../../accounts/actions/sendUserOperation" import { ENTRYPOINT_ADDRESS_V06 } from "../../accounts/utils/constants" import type { ENTRYPOINT_ADDRESS_V06_TYPE } from "../../accounts/utils/types" import { estimateUserOperationGas } from "../../bundler" import { chainId } from "../../bundler/actions/chainId" import { getGasFeeValues } from "../../bundler/actions/getGasFeeValues" import { + type GetUserOperationByHashParameters, type GetUserOperationByHashReturnType, getUserOperationByHash } from "../../bundler/actions/getUserOperationByHash" @@ -14,20 +16,18 @@ import { getUserOperationReceipt } from "../../bundler/actions/getUserOperationReceipt" import { getUserOpStatus } from "../../bundler/actions/getUserOperationStatus" +import { sendUserOperation } from "../../bundler/actions/sendUserOperation" import { - type SendUserOperationParameters, - sendUserOperation -} from "../../bundler/actions/sendUserOperation" -import { waitForUserOperationReceipt } from "../../bundler/actions/waitForUserOperationReceipt" + type WaitForUserOperationReceiptParameters, + waitForUserOperationReceipt +} from "../../bundler/actions/waitForUserOperationReceipt" import type { BundlerClient } from "../../bundler/createBundlerClient" import type { EstimateUserOperationGasParameters, GetGasFeeValuesReturnType, - GetUserOperationByHashParameters, StateOverrides, UserOpReceipt, - UserOpStatus, - WaitForUserOperationReceiptParameters + UserOpStatus } from "../../bundler/utils/types" export type BundlerActions = { @@ -144,7 +144,7 @@ export type BundlerActions = { * * - Docs: https://docs.biconomy.io/... // TODO * - * @param args {@link GetUserOperationByHash} UserOpHash that was returned by {@link sendUserOperation} + * @param args UserOpHash that was returned by {@link sendUserOperation} * @returns userOperation along with entryPoint, transactionHash, blockHash, blockNumber if found or null * * @example diff --git a/src/client/decorators/index.ts b/src/client/decorators/index.ts new file mode 100644 index 000000000..cd790d044 --- /dev/null +++ b/src/client/decorators/index.ts @@ -0,0 +1,3 @@ +export * from "./bundler" +export * from "./paymaster" +export * from "./smartAccount" diff --git a/src/client/decorators/smartAccount.ts b/src/client/decorators/smartAccount.ts index 3496649e2..a963b3738 100644 --- a/src/client/decorators/smartAccount.ts +++ b/src/client/decorators/smartAccount.ts @@ -4,9 +4,15 @@ import type { DeployContractParameters, Hash, SendTransactionParameters, + SendTransactionReturnType, + SignMessageParameters, + SignMessageReturnType, + SignTypedDataParameters, + SignTypedDataReturnType, Transport, TypedData, - WriteContractParameters + WriteContractParameters, + WriteContractReturnType } from "viem" // import { signTypedData } from "../../accounts/actions/sygnTypedData" import type { Prettify } from "viem/chains" diff --git a/src/client/index.ts b/src/client/index.ts index 41a14dd9a..d4fae98b8 100644 --- a/src/client/index.ts +++ b/src/client/index.ts @@ -1 +1,3 @@ export * from "./createSmartAccountClient.js" +export * from "./decorators/index.js" +export * from "./utils/types" diff --git a/src/client/utils/types.ts b/src/client/utils/types.ts index 44796f0c2..77a3763be 100644 --- a/src/client/utils/types.ts +++ b/src/client/utils/types.ts @@ -1,6 +1,7 @@ -import type { Chain, ClientConfig, Transport } from "viem" +import type { Address, Chain, ClientConfig, Hash, Hex, Transport } from "viem" import type { Prettify } from "viem/chains" import type { Middleware, SmartAccount } from "../../accounts/utils/types" +import type { TStatus } from "../../bundler" export type SmartAccountClientConfig< transport extends Transport = Transport, @@ -16,3 +17,42 @@ export type SmartAccountClientConfig< bundlerTransport: Transport } > + +export type EstimateUserOperationGasReturnType = { + preVerificationGas: bigint + verificationGasLimit: bigint + callGasLimit: bigint +} + +export type GetUserOperationReceiptReturnType = { + userOpHash: Hash + sender: Address + nonce: bigint + actualGasUsed: bigint + actualGasCost: bigint + success: boolean + receipt: { + transactionHash: Hex + transactionIndex: bigint + blockHash: Hash + blockNumber: bigint + from: Address + to: Address | null + cumulativeGasUsed: bigint + status: TStatus + gasUsed: bigint + contractAddress: Address | null + logsBloom: Hex + effectiveGasPrice: bigint + } + logs: { + data: Hex + blockNumber: bigint + blockHash: Hash + transactionHash: Hash + logIndex: bigint + transactionIndex: bigint + address: Address + topics: Hex[] + }[] +} diff --git a/src/errors/index.ts b/src/errors/index.ts new file mode 100644 index 000000000..87cd4b2bf --- /dev/null +++ b/src/errors/index.ts @@ -0,0 +1,2 @@ +export * from "./getters" +export * from "./models" diff --git a/src/index.ts b/src/index.ts index b29b741af..3047e3a48 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,6 @@ -export { signerToSmartAccount } from "./accounts/index.js" - -export { createSmartAccountClient } from "./client/index.js" - -// TODO import from the rest of the files in the core package +export * from "./accounts" +export * from "./errors" +export * from "./bundler" +export * from "./paymaster" +export * from "./client" +export * from "./modules" diff --git a/src/modules/index.ts b/src/modules/index.ts index 0178dc9ec..20d742817 100644 --- a/src/modules/index.ts +++ b/src/modules/index.ts @@ -1,7 +1,2 @@ -export type { - BaseValidationModule, - BaseValidationModuleConfig, - ModuleInfo -} from "./utils/types.js" - -export { createECDSAOwnershipModule } from "./ecdsaOwnershipValidationModule/createECDSAOwnershipModule.js" +export * from "./utils/types" +export * from "./ecdsaOwnershipValidationModule/createECDSAOwnershipModule.js" diff --git a/src/paymaster/index.ts b/src/paymaster/index.ts index af0aa1897..827891827 100644 --- a/src/paymaster/index.ts +++ b/src/paymaster/index.ts @@ -1,3 +1,2 @@ -export type { PaymasterRpcSchema } from "./utils/types.js" -export { type PaymasterClientActions } from "../client/decorators/paymaster.js" -export { createPaymasterClient } from "./createPaymasterClient.js" +export * from "./utils/types.js" +export * from "./createPaymasterClient.js" From 4d7b6d09ee5a21aee661da05b786c09086b8ea4a Mon Sep 17 00:00:00 2001 From: joepegler Date: Thu, 19 Sep 2024 15:23:27 +0100 Subject: [PATCH 2/2] chore: nexus rising --- .changeset/config.json | 2 +- .env.example | 9 +- .github/ISSUE_TEMPLATE/2_bug_report.yml | 6 +- .github/ISSUE_TEMPLATE/4_security_report.yml | 4 +- .../6_build_deployment_issue.yml | 2 +- .../pull_request_template.md | 2 +- .github/actions/build/action.yml | 3 + .../actions/install-dependencies/action.yml | 6 +- .github/workflows/build.yml | 5 +- .github/workflows/coverage.yml | 10 +- .github/workflows/docs.yml | 6 +- .github/workflows/playground.yml | 29 + .github/workflows/pr-lint.yml | 16 - .github/workflows/size-report.yml | 16 +- .github/workflows/unit-tests.yml | 30 + .gitignore | 6 +- .size-limit.json | 28 +- CHANGELOG.md | 3 + README.md | 92 +- SECURITY.md | 6 +- biome.json | 4 +- bun.lockb | Bin 228680 -> 355840 bytes config.json | 14 + coverage/coverage-final.json | 69 +- coverage/coverage-summary.json | 71 +- package.json | 62 +- scripts/fetch:deployment.ts | 123 ++ scripts/send:userOp.ts | 82 ++ scripts/viem:bundler.ts | 158 +++ src/accounts/actions/index.ts | 6 - .../actions/prepareUserOperationRequest.ts | 186 --- src/accounts/actions/sendTransaction.ts | 128 -- src/accounts/actions/sendTransactions.ts | 128 -- src/accounts/actions/sendUserOperation.ts | 57 - src/accounts/actions/signMessage.ts | 73 - src/accounts/actions/signTypedData.ts | 157 --- .../biconomyV2/signerToSmartAccount.ts | 461 ------- src/accounts/index.ts | 3 - src/accounts/utils/abis.ts | 247 ---- src/accounts/utils/constants.ts | 10 - src/accounts/utils/helpers.ts | 354 ----- src/accounts/utils/types.ts | 236 ---- src/bundler/actions/chainId.ts | 27 - .../actions/estimateUserOperationGas.ts | 69 - src/bundler/actions/getGasFeeValues.ts | 24 - src/bundler/actions/getUserOperationByHash.ts | 78 -- .../actions/getUserOperationReceipt.ts | 61 - src/bundler/actions/getUserOperationStatus.ts | 26 - src/bundler/actions/index.ts | 8 - src/bundler/actions/sendUserOperation.ts | 56 - .../actions/waitForUserOperationReceipt.ts | 125 -- src/bundler/createBundlerClient.ts | 57 - src/bundler/index.ts | 4 - src/bundler/utils/helpers.ts | 98 -- src/bundler/utils/types.ts | 141 -- src/client/createSmartAccountClient.ts | 75 - src/client/decorators/bundler.ts | 253 ---- src/client/decorators/index.ts | 3 - src/client/decorators/paymaster.ts | 79 -- src/client/index.ts | 3 - src/client/utils/types.ts | 58 - src/errors/getters/getBundlerError.ts | 63 - .../getEstimateUserOperationGasError.ts | 22 - .../getters/getSendUserOperationError.ts | 24 - .../getters/getSponsorUserOperationError.ts | 28 - src/errors/getters/index.ts | 4 - src/errors/helpers.ts | 27 - src/errors/index.ts | 2 - .../models/EstimateUserOperationGasError.ts | 48 - src/errors/models/ExecutionRevertedError.ts | 29 - src/errors/models/SendUserOperationError.ts | 47 - .../models/SponsorUserOperationError.ts | 47 - src/errors/models/UnknownNodeError.ts | 14 - src/errors/models/index.ts | 24 - src/index.ts | 6 - .../createECDSAOwnershipModule.ts | 128 -- src/modules/index.ts | 2 - .../createSessionKeyManagerModule.ts | 0 src/modules/utils/types.ts | 111 -- .../actions/getPaymasterFeeQuotesOrData.ts | 37 - src/paymaster/actions/sponsorUserOperation.ts | 52 - src/paymaster/createPaymasterClient.ts | 57 - src/paymaster/index.ts | 2 - src/paymaster/utils/helpers.ts | 53 - src/paymaster/utils/types.ts | 173 --- src/sdk/__contracts/abi/EIP1271Abi.ts | 27 + src/sdk/__contracts/abi/EntryPointABI.ts | 657 +++++++++ src/sdk/__contracts/abi/K1ValidatorAbi.ts | 320 +++++ .../__contracts/abi/K1ValidatorFactoryAbi.ts | 386 ++++++ src/sdk/__contracts/abi/NexusAbi.ts | 1215 +++++++++++++++++ src/sdk/__contracts/abi/UniActionPolicyAbi.ts | 58 + src/sdk/__contracts/abi/index.ts | 6 + src/sdk/__contracts/addresses.ts | 9 + src/sdk/__contracts/index.ts | 35 + src/sdk/account/index.ts | 2 + src/sdk/account/toNexusAccount.test.ts | 376 +++++ src/sdk/account/toNexusAccount.ts | 517 +++++++ src/sdk/account/utils/AccountNotFound.ts | 20 + src/sdk/account/utils/Constants.ts | 144 ++ src/sdk/account/utils/Helpers.ts | 4 + src/sdk/account/utils/Logger.ts | 52 + src/sdk/account/utils/Types.ts | 106 ++ src/sdk/account/utils/Utils.ts | 338 +++++ src/sdk/account/utils/getAAError.ts | 85 ++ src/sdk/account/utils/getChain.ts | 126 ++ src/sdk/account/utils/index.ts | 6 + src/sdk/account/utils/toHolder.ts | 85 ++ src/sdk/account/utils/utils.test.ts | 58 + .../clients/createBicoBundlerClient.test.ts | 85 ++ src/sdk/clients/createBicoBundlerClient.ts | 61 + src/sdk/clients/createBicoPaymasterClient.ts | 79 ++ src/sdk/clients/createNexusClient.test.ts | 275 ++++ src/sdk/clients/createNexusClient.ts | 222 +++ .../clients/decorators/erc7579/accountId.ts | 108 ++ .../erc7579/erc7579.decorators.test.ts | 116 ++ .../decorators/erc7579/getActiveHook.ts | 69 + .../erc7579/getFallbackBySelector.ts | 90 ++ .../erc7579/getInstalledExecutors.ts | 96 ++ .../erc7579/getInstalledValidators.ts | 96 ++ src/sdk/clients/decorators/erc7579/index.ts | 148 ++ .../decorators/erc7579/installModule.ts | 105 ++ .../decorators/erc7579/installModules.ts | 113 ++ .../decorators/erc7579/isModuleInstalled.ts | 138 ++ .../erc7579/supportsExecutionMode.ts | 183 +++ .../decorators/erc7579/supportsModule.ts | 143 ++ .../decorators/erc7579/uninstallFallback.ts | 113 ++ .../decorators/erc7579/uninstallModule.ts | 113 ++ .../decorators/erc7579/uninstallModules.ts | 110 ++ .../smartAccount/account.decorators.test.ts | 139 ++ .../clients/decorators/smartAccount/index.ts} | 278 +--- .../smartAccount/sendTransaction.ts | 105 ++ .../decorators/smartAccount/signMessage.ts | 46 + .../decorators/smartAccount/signTypedData.ts | 113 ++ .../decorators/smartAccount/writeContract.ts | 93 ++ src/sdk/clients/index.ts | 5 + src/sdk/index.ts | 3 + src/sdk/modules/base/BaseExecutionModule.ts | 10 + src/sdk/modules/base/BaseModule.ts | 106 ++ src/sdk/modules/base/BaseValidationModule.ts | 65 + src/sdk/modules/executors/OwnableExecutor.ts | 198 +++ src/sdk/modules/index.ts | 14 + src/sdk/modules/interfaces/IExecutorModule.ts | 6 + .../modules/interfaces/IValidationModule.ts | 11 + src/sdk/modules/smart.sessions.test.ts | 137 ++ src/sdk/modules/smartSessions.ts | 147 ++ src/sdk/modules/utils/Constants.ts | 3 + src/sdk/modules/utils/Helper.ts | 207 +++ src/sdk/modules/utils/Types.ts | 167 +++ src/sdk/modules/utils/Uid.ts | 12 + .../modules/validators/K1ValidatorModule.ts | 25 + .../modules/validators/OwnableValidator.ts | 179 +++ .../modules/validators/ValidationModule.ts | 25 + .../modules/validators/k1Validator.test.ts | 127 ++ src/test/README.md | 94 ++ .../__contracts/abi/BiconomyMetaFactoryAbi.ts | 319 +++++ src/test/__contracts/abi/BootstrapAbi.ts | 802 +++++++++++ src/test/__contracts/abi/BootstrapLibAbi.ts | 110 ++ src/test/__contracts/abi/CounterAbi.ts | 36 + src/test/__contracts/abi/MockExecutorAbi.ts | 309 +++++ src/test/__contracts/abi/MockHandlerAbi.ts | 227 +++ src/test/__contracts/abi/MockHookAbi.ts | 133 ++ src/test/__contracts/abi/MockRegistryAbi.ts | 162 +++ src/test/__contracts/abi/MockTokenAbi.ts | 344 +++++ src/test/__contracts/abi/MockValidatorAbi.ts | 299 ++++ .../__contracts/abi/NexusAccountFactoryAbi.ts | 323 +++++ src/test/__contracts/abi/StakeableAbi.ts | 211 +++ .../__contracts/abi/TokenWithPermitAbi.ts | 611 +++++++++ src/test/__contracts/abi/index.ts | 13 + src/test/__contracts/mockAddresses.ts | 19 + src/test/callDatas.ts | 73 + src/test/executables.ts | 23 + src/test/globalSetup.ts | 26 + src/test/playground.test.ts | 170 +++ src/test/testSetup.ts | 59 + src/test/testUtils.ts | 487 +++++++ {tests => src/test}/vitest.config.ts | 15 +- tests/ep6/account.test.ts | 310 ----- tests/ep6/accountSignature.test.ts | 264 ---- tests/ep6/bundler.test.ts | 106 -- tests/ep6/erc20Paymaster.test.ts | 256 ---- tests/ep6/errors.test.ts | 144 -- .../ep6/modules/ecdsaOwnershipModule.test.ts | 59 - tests/ep6/paymaster.test.ts | 200 --- tests/globalSetup.ts | 6 - tests/setupFiles.ts | 4 - tests/utils.ts | 65 - tsconfig/tsconfig.base.json | 1 + tsconfig/tsconfig.cjs.json | 24 +- tsconfig/tsconfig.esm.json | 12 +- tsconfig/tsconfig.json | 2 +- tsconfig/tsconfig.types.json | 12 +- typedoc.json | 5 + 192 files changed, 14694 insertions(+), 6112 deletions(-) create mode 100644 .github/workflows/playground.yml delete mode 100644 .github/workflows/pr-lint.yml create mode 100644 .github/workflows/unit-tests.yml create mode 100644 CHANGELOG.md create mode 100644 config.json create mode 100644 scripts/fetch:deployment.ts create mode 100644 scripts/send:userOp.ts create mode 100644 scripts/viem:bundler.ts delete mode 100644 src/accounts/actions/index.ts delete mode 100644 src/accounts/actions/prepareUserOperationRequest.ts delete mode 100644 src/accounts/actions/sendTransaction.ts delete mode 100644 src/accounts/actions/sendTransactions.ts delete mode 100644 src/accounts/actions/sendUserOperation.ts delete mode 100644 src/accounts/actions/signMessage.ts delete mode 100644 src/accounts/actions/signTypedData.ts delete mode 100644 src/accounts/biconomyV2/signerToSmartAccount.ts delete mode 100644 src/accounts/index.ts delete mode 100644 src/accounts/utils/abis.ts delete mode 100644 src/accounts/utils/constants.ts delete mode 100644 src/accounts/utils/helpers.ts delete mode 100644 src/accounts/utils/types.ts delete mode 100644 src/bundler/actions/chainId.ts delete mode 100644 src/bundler/actions/estimateUserOperationGas.ts delete mode 100644 src/bundler/actions/getGasFeeValues.ts delete mode 100644 src/bundler/actions/getUserOperationByHash.ts delete mode 100644 src/bundler/actions/getUserOperationReceipt.ts delete mode 100644 src/bundler/actions/getUserOperationStatus.ts delete mode 100644 src/bundler/actions/index.ts delete mode 100644 src/bundler/actions/sendUserOperation.ts delete mode 100644 src/bundler/actions/waitForUserOperationReceipt.ts delete mode 100644 src/bundler/createBundlerClient.ts delete mode 100644 src/bundler/index.ts delete mode 100644 src/bundler/utils/helpers.ts delete mode 100644 src/bundler/utils/types.ts delete mode 100644 src/client/createSmartAccountClient.ts delete mode 100644 src/client/decorators/bundler.ts delete mode 100644 src/client/decorators/index.ts delete mode 100644 src/client/decorators/paymaster.ts delete mode 100644 src/client/index.ts delete mode 100644 src/client/utils/types.ts delete mode 100644 src/errors/getters/getBundlerError.ts delete mode 100644 src/errors/getters/getEstimateUserOperationGasError.ts delete mode 100644 src/errors/getters/getSendUserOperationError.ts delete mode 100644 src/errors/getters/getSponsorUserOperationError.ts delete mode 100644 src/errors/getters/index.ts delete mode 100644 src/errors/helpers.ts delete mode 100644 src/errors/index.ts delete mode 100644 src/errors/models/EstimateUserOperationGasError.ts delete mode 100644 src/errors/models/ExecutionRevertedError.ts delete mode 100644 src/errors/models/SendUserOperationError.ts delete mode 100644 src/errors/models/SponsorUserOperationError.ts delete mode 100644 src/errors/models/UnknownNodeError.ts delete mode 100644 src/errors/models/index.ts delete mode 100644 src/index.ts delete mode 100644 src/modules/ecdsaOwnershipValidationModule/createECDSAOwnershipModule.ts delete mode 100644 src/modules/index.ts delete mode 100644 src/modules/sessionKeyManagerModule/createSessionKeyManagerModule.ts delete mode 100644 src/modules/utils/types.ts delete mode 100644 src/paymaster/actions/getPaymasterFeeQuotesOrData.ts delete mode 100644 src/paymaster/actions/sponsorUserOperation.ts delete mode 100644 src/paymaster/createPaymasterClient.ts delete mode 100644 src/paymaster/index.ts delete mode 100644 src/paymaster/utils/helpers.ts delete mode 100644 src/paymaster/utils/types.ts create mode 100644 src/sdk/__contracts/abi/EIP1271Abi.ts create mode 100644 src/sdk/__contracts/abi/EntryPointABI.ts create mode 100644 src/sdk/__contracts/abi/K1ValidatorAbi.ts create mode 100644 src/sdk/__contracts/abi/K1ValidatorFactoryAbi.ts create mode 100644 src/sdk/__contracts/abi/NexusAbi.ts create mode 100644 src/sdk/__contracts/abi/UniActionPolicyAbi.ts create mode 100644 src/sdk/__contracts/abi/index.ts create mode 100644 src/sdk/__contracts/addresses.ts create mode 100644 src/sdk/__contracts/index.ts create mode 100644 src/sdk/account/index.ts create mode 100644 src/sdk/account/toNexusAccount.test.ts create mode 100644 src/sdk/account/toNexusAccount.ts create mode 100644 src/sdk/account/utils/AccountNotFound.ts create mode 100644 src/sdk/account/utils/Constants.ts create mode 100644 src/sdk/account/utils/Helpers.ts create mode 100644 src/sdk/account/utils/Logger.ts create mode 100644 src/sdk/account/utils/Types.ts create mode 100644 src/sdk/account/utils/Utils.ts create mode 100644 src/sdk/account/utils/getAAError.ts create mode 100644 src/sdk/account/utils/getChain.ts create mode 100644 src/sdk/account/utils/index.ts create mode 100644 src/sdk/account/utils/toHolder.ts create mode 100644 src/sdk/account/utils/utils.test.ts create mode 100644 src/sdk/clients/createBicoBundlerClient.test.ts create mode 100644 src/sdk/clients/createBicoBundlerClient.ts create mode 100644 src/sdk/clients/createBicoPaymasterClient.ts create mode 100644 src/sdk/clients/createNexusClient.test.ts create mode 100644 src/sdk/clients/createNexusClient.ts create mode 100644 src/sdk/clients/decorators/erc7579/accountId.ts create mode 100644 src/sdk/clients/decorators/erc7579/erc7579.decorators.test.ts create mode 100644 src/sdk/clients/decorators/erc7579/getActiveHook.ts create mode 100644 src/sdk/clients/decorators/erc7579/getFallbackBySelector.ts create mode 100644 src/sdk/clients/decorators/erc7579/getInstalledExecutors.ts create mode 100644 src/sdk/clients/decorators/erc7579/getInstalledValidators.ts create mode 100644 src/sdk/clients/decorators/erc7579/index.ts create mode 100644 src/sdk/clients/decorators/erc7579/installModule.ts create mode 100644 src/sdk/clients/decorators/erc7579/installModules.ts create mode 100644 src/sdk/clients/decorators/erc7579/isModuleInstalled.ts create mode 100644 src/sdk/clients/decorators/erc7579/supportsExecutionMode.ts create mode 100644 src/sdk/clients/decorators/erc7579/supportsModule.ts create mode 100644 src/sdk/clients/decorators/erc7579/uninstallFallback.ts create mode 100644 src/sdk/clients/decorators/erc7579/uninstallModule.ts create mode 100644 src/sdk/clients/decorators/erc7579/uninstallModules.ts create mode 100644 src/sdk/clients/decorators/smartAccount/account.decorators.test.ts rename src/{client/decorators/smartAccount.ts => sdk/clients/decorators/smartAccount/index.ts} (54%) create mode 100644 src/sdk/clients/decorators/smartAccount/sendTransaction.ts create mode 100644 src/sdk/clients/decorators/smartAccount/signMessage.ts create mode 100644 src/sdk/clients/decorators/smartAccount/signTypedData.ts create mode 100644 src/sdk/clients/decorators/smartAccount/writeContract.ts create mode 100644 src/sdk/clients/index.ts create mode 100644 src/sdk/index.ts create mode 100644 src/sdk/modules/base/BaseExecutionModule.ts create mode 100644 src/sdk/modules/base/BaseModule.ts create mode 100644 src/sdk/modules/base/BaseValidationModule.ts create mode 100644 src/sdk/modules/executors/OwnableExecutor.ts create mode 100644 src/sdk/modules/index.ts create mode 100644 src/sdk/modules/interfaces/IExecutorModule.ts create mode 100644 src/sdk/modules/interfaces/IValidationModule.ts create mode 100644 src/sdk/modules/smart.sessions.test.ts create mode 100644 src/sdk/modules/smartSessions.ts create mode 100644 src/sdk/modules/utils/Constants.ts create mode 100644 src/sdk/modules/utils/Helper.ts create mode 100644 src/sdk/modules/utils/Types.ts create mode 100644 src/sdk/modules/utils/Uid.ts create mode 100644 src/sdk/modules/validators/K1ValidatorModule.ts create mode 100644 src/sdk/modules/validators/OwnableValidator.ts create mode 100644 src/sdk/modules/validators/ValidationModule.ts create mode 100644 src/sdk/modules/validators/k1Validator.test.ts create mode 100644 src/test/README.md create mode 100644 src/test/__contracts/abi/BiconomyMetaFactoryAbi.ts create mode 100644 src/test/__contracts/abi/BootstrapAbi.ts create mode 100644 src/test/__contracts/abi/BootstrapLibAbi.ts create mode 100644 src/test/__contracts/abi/CounterAbi.ts create mode 100644 src/test/__contracts/abi/MockExecutorAbi.ts create mode 100644 src/test/__contracts/abi/MockHandlerAbi.ts create mode 100644 src/test/__contracts/abi/MockHookAbi.ts create mode 100644 src/test/__contracts/abi/MockRegistryAbi.ts create mode 100644 src/test/__contracts/abi/MockTokenAbi.ts create mode 100644 src/test/__contracts/abi/MockValidatorAbi.ts create mode 100644 src/test/__contracts/abi/NexusAccountFactoryAbi.ts create mode 100644 src/test/__contracts/abi/StakeableAbi.ts create mode 100644 src/test/__contracts/abi/TokenWithPermitAbi.ts create mode 100644 src/test/__contracts/abi/index.ts create mode 100644 src/test/__contracts/mockAddresses.ts create mode 100644 src/test/callDatas.ts create mode 100644 src/test/executables.ts create mode 100644 src/test/globalSetup.ts create mode 100644 src/test/playground.test.ts create mode 100644 src/test/testSetup.ts create mode 100644 src/test/testUtils.ts rename {tests => src/test}/vitest.config.ts (66%) delete mode 100644 tests/ep6/account.test.ts delete mode 100644 tests/ep6/accountSignature.test.ts delete mode 100644 tests/ep6/bundler.test.ts delete mode 100644 tests/ep6/erc20Paymaster.test.ts delete mode 100644 tests/ep6/errors.test.ts delete mode 100644 tests/ep6/modules/ecdsaOwnershipModule.test.ts delete mode 100644 tests/ep6/paymaster.test.ts delete mode 100644 tests/globalSetup.ts delete mode 100644 tests/setupFiles.ts delete mode 100644 tests/utils.ts diff --git a/.changeset/config.json b/.changeset/config.json index b8e951163..765c9d223 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -4,7 +4,7 @@ "commit": false, "fixed": [], "linked": [], - "access": "restricted", + "access": "public", "baseBranch": "main", "updateInternalDependencies": "patch", "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { diff --git a/.env.example b/.env.example index 6abbea97e..a62a5287b 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,7 @@ PRIVATE_KEY= -BUNDLER_URL=https://bundler.biconomy.io/api/v2/80001/nJPK7B3ru.dd7f7861-190d-41bd-af80-6877f74b8f44 -PAYMASTER_URL=https://paymaster.biconomy.io/api/v1/80001/-2BFRwRlJ.8afbc010-edcf-46b3-8713-77639655f2dd -CHAIN_ID=80001 +CHAIN_ID=84532 +RPC_URL= +BUNDLER_URL= +BICONOMY_SDK_DEBUG=false +RUN_PLAYGROUND=false +PAYMASTER_URL= \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/2_bug_report.yml b/.github/ISSUE_TEMPLATE/2_bug_report.yml index f71b20152..038107e78 100644 --- a/.github/ISSUE_TEMPLATE/2_bug_report.yml +++ b/.github/ISSUE_TEMPLATE/2_bug_report.yml @@ -20,7 +20,7 @@ body: attributes: label: Package Version description: What version of the SDK are you using? - placeholder: 0.1.0 + placeholder: 4.1.0 validations: required: true @@ -56,7 +56,7 @@ body: attributes: label: Link to Minimal Reproducible Example (StackBlitz, CodeSandbox, GitHub repo etc.) description: | - This makes investigating issues and helping you out significantly easier! For most issues, you will likely get asked to provide one so why not add one now :) + [Please provide by forking this project](https://stackblitz.com/~/github.com/bcnmy/sdk-examples) and making relevant changes to the boilerplate. This makes investigating issues and helping you out significantly easier! For most issues, you will likely get asked to provide one so why not add one now :) validations: required: false @@ -68,4 +68,4 @@ body: Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. validations: - required: false \ No newline at end of file + required: false diff --git a/.github/ISSUE_TEMPLATE/4_security_report.yml b/.github/ISSUE_TEMPLATE/4_security_report.yml index 4f8d7b666..6fc0ef4fa 100644 --- a/.github/ISSUE_TEMPLATE/4_security_report.yml +++ b/.github/ISSUE_TEMPLATE/4_security_report.yml @@ -5,12 +5,12 @@ labels: ["security", "triage needed"] body: - type: markdown attributes: - value: "Security is our top priority. If you've discovered a potential security issue that is **critical or high** in nature and could affect our deployed contracts, **please do not report it here.** Instead, email us directly at security@biconomy.io for a confidential review. For all other security-related inquiries that do not pose an immediate risk to our deployed contracts, please proceed." + value: "Security is our top priority. If you've discovered a potential security issue please proceed." - type: checkboxes attributes: label: Security Level Acknowledgement options: - - label: "I understand this issue will be public. It is NOT critical or high risk and does not endanger deployed contracts." + - label: "I understand this issue will be public. It is NOT critical or high risk and does not endanger deployed contracts. If it is please email: security@biconomy.io" required: true - type: input attributes: diff --git a/.github/ISSUE_TEMPLATE/6_build_deployment_issue.yml b/.github/ISSUE_TEMPLATE/6_build_deployment_issue.yml index e0c69a156..e0034b17e 100644 --- a/.github/ISSUE_TEMPLATE/6_build_deployment_issue.yml +++ b/.github/ISSUE_TEMPLATE/6_build_deployment_issue.yml @@ -1,5 +1,5 @@ name: ๐Ÿ›  Build & Deployment Issues -description: Report issues related to building or deploying smart contracts +description: Report issues title: "[BUILD/DEPLOY] " labels: ["bug", "help wanted"] body: diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md index fca427abe..35e920656 100644 --- a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +++ b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md @@ -1,4 +1,4 @@ -## Pull Request for Smart Contract Improvement +## Pull Request for SDK Improvement **Describe your changes:** diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index 1cd962cb5..c0917e09a 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -7,6 +7,9 @@ runs: - name: Set up Bun uses: oven-sh/setup-bun@v1 + - name: Set up foundry + uses: foundry-rs/foundry-toolchain@v1 + - name: Install dependencies shell: bash run: bun install --frozen-lockfile diff --git a/.github/actions/install-dependencies/action.yml b/.github/actions/install-dependencies/action.yml index bbd12fb16..85ebbac6e 100644 --- a/.github/actions/install-dependencies/action.yml +++ b/.github/actions/install-dependencies/action.yml @@ -7,6 +7,10 @@ runs: - name: Set up Bun uses: oven-sh/setup-bun@v1 + - name: Set up foundry + uses: foundry-rs/foundry-toolchain@v1 + - name: Install dependencies shell: bash - run: bun install --frozen-lockfile + run: | + bun install --frozen-lockfile diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9f2ee837c..96f601a8f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,5 +1,6 @@ name: build on: + workflow_dispatch: pull_request: types: [opened, reopened, synchronize, ready_for_review] jobs: @@ -7,7 +8,7 @@ jobs: name: build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build - uses: ./.github/actions/build \ No newline at end of file + uses: ./.github/actions/build diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index df21f7e21..2516c22c7 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -10,18 +10,22 @@ jobs: concurrency: group: ${{ github.workflow }}-${{ github.ref }} steps: - - uses: actions/checkout@v3 + - uses: actions/setup-node@v4 + with: + node-version: 22 + - uses: actions/checkout@v3 - name: Install dependencies uses: ./.github/actions/install-dependencies - name: Run the tests - run: bun run test:ci + run: bun run test env: PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} - BUNDLER_URL: ${{ secrets.BUNDLER_URL }} + BUNDLER_URL: https://api.pimlico.io/v2/84532/rpc?apikey=pim_im13GpaqtMDSiJFhXMxcVn PAYMASTER_URL: ${{ secrets.PAYMASTER_URL }} CHAIN_ID: ${{ secrets.CHAIN_ID }} + CI: true - name: report coverage uses: davelosert/vitest-coverage-report-action@v2 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 6e2e2a63f..239974f37 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -3,7 +3,7 @@ on: workflow_dispatch: push: branches: - - develop + - main permissions: contents: write @@ -11,7 +11,7 @@ jobs: deploy-docs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: git config --global user.email "gh@runner.com" - run: git config --global user.name "gh-runner" @@ -20,7 +20,7 @@ jobs: - name: Set remote url run: git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/bcnmy/sdk.git - + - name: Run the tests run: bun run docs:deploy diff --git a/.github/workflows/playground.yml b/.github/workflows/playground.yml new file mode 100644 index 000000000..1f8d00abf --- /dev/null +++ b/.github/workflows/playground.yml @@ -0,0 +1,29 @@ +name: playground +on: + pull_request: + types: [opened, reopened, synchronize, ready_for_review] +jobs: + playground: + name: playground + permissions: write-all + runs-on: ubuntu-latest + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + steps: + - uses: actions/setup-node@v4 + with: + node-version: 22 + + - uses: actions/checkout@v3 + - name: Install dependencies + uses: ./.github/actions/install-dependencies + + - name: Run the tests + run: bun run playground + env: + RUN_PLAYGROUND: true + PAYMASTER_URL: ${{ secrets.PAYMASTER_URL }} + PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} + BUNDLER_URL: ${{ secrets.BUNDLER_URL }} + CHAIN_ID: 84532 + CI: true \ No newline at end of file diff --git a/.github/workflows/pr-lint.yml b/.github/workflows/pr-lint.yml deleted file mode 100644 index 252a866c4..000000000 --- a/.github/workflows/pr-lint.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: pr lint -on: - pull_request: - types: [opened, reopened, synchronize, ready_for_review, edited] -jobs: - enforce_title: - name: pr lint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install dependencies - uses: ./.github/actions/install-dependencies - - - name: Use commitlint to check PR title - run: echo "${{ github.event.pull_request.title }}" | bun commitlint diff --git a/.github/workflows/size-report.yml b/.github/workflows/size-report.yml index 90002a5f1..053e2d8b8 100644 --- a/.github/workflows/size-report.yml +++ b/.github/workflows/size-report.yml @@ -1,5 +1,6 @@ name: size report on: + workflow_dispatch: pull_request: types: [opened, reopened, synchronize, ready_for_review] @@ -16,13 +17,22 @@ jobs: steps: - name: Clone repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 22 + + - name: Set up Bun + uses: oven-sh/setup-bun@v1 - name: Install dependencies - uses: ./.github/actions/install-dependencies + shell: bash + run: | + bun install --frozen-lockfile - name: Report bundle size uses: andresz1/size-limit-action@master with: github_token: ${{ secrets.GITHUB_TOKEN }} - package_manager: bun \ No newline at end of file + package_manager: bun diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml new file mode 100644 index 000000000..280ac8249 --- /dev/null +++ b/.github/workflows/unit-tests.yml @@ -0,0 +1,30 @@ +name: unit-tests +on: + workflow_dispatch: + pull_request: + types: [opened, reopened, synchronize, ready_for_review] +jobs: + unit-tests: + name: unit-tests + permissions: write-all + runs-on: ubuntu-latest + concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-unit-tests + cancel-in-progress: true + steps: + - uses: actions/setup-node@v4 + with: + node-version: 22 + + - uses: actions/checkout@v4 + + - name: Install dependencies + uses: ./.github/actions/install-dependencies + + - name: Run the tests + run: bun run test + env: + PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} + BUNDLER_URL: https://api.pimlico.io/v2/84532/rpc?apikey=pim_im13GpaqtMDSiJFhXMxcVn + CHAIN_ID: 84532 + CI: true diff --git a/.gitignore b/.gitignore index 705bf3987..3a8fedd36 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,7 @@ _.seed *.pid.lock # Directory for instrumented libs generated by jscoverage/JSCover - +coverage lib-cov # Coverage directory used by tools like istanbul @@ -175,4 +175,6 @@ dist # Finder (MacOS) folder config .DS_Store -docs \ No newline at end of file +docs + +sessionStorageData \ No newline at end of file diff --git a/.size-limit.json b/.size-limit.json index 344577b7d..7b8636597 100644 --- a/.size-limit.json +++ b/.size-limit.json @@ -2,30 +2,28 @@ { "name": "core (esm)", "path": "./dist/_esm/index.js", - "limit": "10 kB", - "import": "*" + "limit": "25 kB", + "import": "*", + "ignore": ["node:fs", "fs"] }, { "name": "core (cjs)", "path": "./dist/_cjs/index.js", - "limit": "25 kB" - }, - { - "name": "smartAccount (tree-shaking)", - "path": "./dist/_esm/index.js", - "limit": "5 kB", - "import": "{ signerToSmartAccount }" + "limit": "25 kB", + "ignore": ["node:fs", "fs"] }, { "name": "bundler (tree-shaking)", - "path": "./dist/_esm/bundler/index.js", - "limit": "5 kB", - "import": "{ createBundlerClient }" + "path": "./dist/_esm/clients/createBicoBundlerClient.js", + "limit": "15 kB", + "import": "{ createBicoBundlerClient }", + "ignore": ["node:fs", "fs"] }, { "name": "paymaster (tree-shaking)", - "path": "./dist/_esm/paymaster/index.js", - "limit": "5 kB", - "import": "{ createPaymasterClient }" + "path": "./dist/_esm/clients/createBicoPaymasterClient.js", + "limit": "15 kB", + "import": "{ createBicoPaymasterClient }", + "ignore": ["node:fs", "fs"] } ] diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..ddccbd8be --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +# @biconomy/sdk + +## 0.0.0 \ No newline at end of file diff --git a/README.md b/README.md index c7ea173bc..6e5a82f9f 100644 --- a/README.md +++ b/README.md @@ -4,41 +4,31 @@ [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/bcnmy/sdk) -This repository serves as a comprehensive foundation for typescript account abstraction projects, streamlining the development process with a focus on best practices, security, and efficiency. +The Biconomy SDK is your all-in-one toolkit for building decentralized applications (dApps) with **ERC4337 Account Abstraction** and **Smart Accounts**. It is designed for seamless user experiences and offers non-custodial solutions for user onboarding, sending transactions (userOps), gas sponsorship and much more. ## ๐Ÿ“š Table of Contents - [SDK ๐Ÿš€](#sdk-) + - [๐Ÿ“š Table of Contents](#-table-of-contents) - - [Getting Started](#getting-started) + - [๐Ÿ› ๏ธ Quickstart](#-quickstart) + - [Prerequisites](#prerequisites) - [Installation](#installation) - - [๐Ÿ› ๏ธ Essential Scripts](#๏ธ-essential-scripts) - - [๐Ÿงช Run Tests](#-run-tests) - - [๐Ÿ“Š Coverage Report](#-coverage-report) - - [๐Ÿ“„ Documentation](https://bcnmy.github.io/sdk) - - [๐ŸŽจ Lint Code](#-lint-code) - - [๐Ÿ–Œ๏ธ Auto-fix Linting Issues](#๏ธ-auto-fix-linting-issues) - - [Documentation and Resources](#-documentation-and-resources) + + - [๐Ÿ“„ Documentation and Resources](#-documentation-and-resources) + - [๐Ÿ’ผ Examples](#-examples) - [License](#license) - [Connect with Biconomy ๐ŸŠ](#connect-with-biconomy-๐ŸŠ) -## Getting Started - -To kickstart, follow these steps: - -### Prerequisites - -- Node.js (v18.x or later) -- Bun (or npm) +## ๐Ÿ› ๏ธ Quickstart ### Installation -1. **Clone the repository:** +1. **Add the package and install dependencies:** ```bash -git clone https://github.com/bcnmy/sdk.git -cd sdk +bun add @biconomy/sdk viem ``` 2. **Install dependencies:** @@ -47,58 +37,46 @@ cd sdk bun i ``` -3. **Setup environment variables:** - -Copy `.env.example` to `.env` and fill in your details. +```typescript +import { createNexusClient } from "@biconomy/sdk"; -## ๐Ÿ› ๏ธ Essential Scripts +const smartAccount = await createNexusClient({ + signer: viemWalletOrEthersSigner, + bundlerUrl: "", // From dashboard.biconomy.io + paymasterUrl: "", // From dashboard.biconomy.io +}); -Execute key operations for Foundry and Hardhat with these scripts. Append `:forge` or `:hardhat` to run them in the respective environment. +const { wait } = await smartAccount.sendTransaction({ to: "0x...", value: 1 }); -### ๐Ÿงช Run Tests - -```bash -bun run test -``` - -Carries out tests. - -### ๐Ÿ“Š Coverage Report - -```bash -bun run coverage +const { + receipt: { transactionHash }, + success, +} = await wait(); ``` -Creates detailed reports for test coverage. - -### ๐ŸŽจ Lint Code - -```bash -bun run lint -``` - -Checks code for style and potential errors. - -### ๐Ÿ–Œ๏ธ Auto-fix Linting Issues - -```bash -bun run lint:fix -``` - -Automatically fixes linting problems found. - ## Documentation and Resources For a comprehensive understanding of our project and to contribute effectively, please refer to the following resources: +- [**Biconomy Documentation**](https://docs.biconomy.io) +- [**Biconomy Dashboard**](https://dashboard.biconomy.io) +- [**API Documentation**](https://bcnmy.github.io/sdk) - [**Contributing Guidelines**](./CONTRIBUTING.md): Learn how to contribute to our project, from code contributions to documentation improvements. - [**Code of Conduct**](./CODE_OF_CONDUCT.md): Our commitment to fostering an open and welcoming environment. - [**Security Policy**](./SECURITY.md): Guidelines for reporting security vulnerabilities. -- [**Changelog**](./CHANGELOG.md): Stay updated with the changes and versions. +- [**Changelog**](./CHANGELOG.md): Stay updated with the changes and versions + +## ๐Ÿ’ผ Examples + +- [Initialise a smartAccount](examples/INITIALISE_A_SMART_CONTRACT.md) +- [send some eth with sponsorship](examples/SEND_SOME_ETH_WITH_SPONSORSHIP.md) +- [send a multi tx and pay gas with an erc20 token](examples/SEND_A_MULTI_TX_AND_PAY_GAS_WITH_TOKEN.md) +- [create and use a session](examples/CREATE_AND_USE_A_SESSION.md) +- [create and use a batch session](examples/CREATE_AND_USE_A_BATCH_SESSION.md) ## License -This project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details. +This project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details ## Connect with Biconomy ๐ŸŠ diff --git a/SECURITY.md b/SECURITY.md index 166f6c4c1..390b5453e 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,7 +2,7 @@ ## Reporting a Vulnerability -The safety and security of our smart contract platform is our top priority. If you have discovered a security vulnerability, we appreciate your help in disclosing it to us responsibly. +The safety and security of our sdk is our top priority. If you have discovered a security vulnerability, we appreciate your help in disclosing it to us responsibly. ### Contact Us Directly for Critical or High-Risk Findings @@ -24,7 +24,7 @@ If your findings are eligible for a bounty, we will follow up with you on the pa ### Scope -The bounty program covers code in the `main` branch of our repository, focusing on Solidity smart contracts. The vulnerability must not have already been addressed or fixed in the `develop` branch. +The bounty program covers code in the `main` branch of our repository. The vulnerability must not have already been addressed or fixed in the `develop` branch. ### Eligibility @@ -48,7 +48,7 @@ To be eligible for a bounty, researchers must: - Known issues listed in the issue tracker or already fixed in the `develop` branch. -- Issues in third-party components unless they directly affect our smart contracts. +- Issues in third-party components. ## Legal Notice diff --git a/biome.json b/biome.json index 20f2a72ce..262693997 100644 --- a/biome.json +++ b/biome.json @@ -2,6 +2,7 @@ "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json", "files": { "ignore": [ + "package.json", "node_modules", "**/node_modules", "cache", @@ -12,7 +13,8 @@ "_esm", "_types", "bun.lockb", - "docs" + "docs", + "dist" ] }, "organizeImports": { diff --git a/bun.lockb b/bun.lockb index 7e262a00583e226b8c79e5f6ee631fb1b6424645..db0ee96a0b9a070f57b7076eddfe24358dd1c3cf 100755 GIT binary patch literal 355840 zcmeF41#}ci6s{+@2X}W1PH;#<2*KSoL`Wb;j06q3xH~Lvi?g`<;_mM5y1*ju|I>9h zvw4to&%Ae@9O`V(KUG~{-CMV$WwN{Z@{|k>4l3Ej$G@bfe^~A=q5jEm*!c#yclYw~ z^|bQ}2=a3au?s7eES||^>X*c^{Q70{(zf3eHZ}FCPF~5g+-VSLs_xb{EOpDEsYiwe z`XxjylWB1LC^03`PLiIP*=8B3MXkVqI5-na`{!>7LBsq z7D_*&JQMQIp|qP0ng*HxO20jW-Q9fMJUrcfeL{WEP7ySUQ<1(<*53eSzZ2kt?S}b; zcm{`VHgcGG&Keg)+YvngzNL zniCoc%@6Gi%?))@<+-5wkpG&_WXcP@0nG*7rF0&Y{6LlWg3?YsXf|kIKyZkAaInc4 z8TMldJ{T{5H~#=150l9=xJ#&yuZJl)8bKE#Kf*bnk@ui59eD=I@|`NbT%Dh;%7>`( z04V2gJC%2aa(qju@@!DHn^>KH4=35~Z7A&=g_7S4WxWMZ&i}FMe1tmhsq)RBEGff1$;=s(xNOep7R^@3WQ9wE>14Yc$1 z@$(5WA5PW-7q&_*!2vw^X%b!N0pz2a{e9!$9{wr(dJ9APgfs* zuK*MM2n-1D-HG#@M{A+@CvrhiRWHQD4jYqcf;!)_m{#uR>l;D)p=g82%{?HF$R7RJ+a-PhDvYnpZKJMOV-zONBpbJZC{p?vvt1s;h1FWq_Pd`*M^;F|AptM#`_BYwL ze1Zd_sz^PzEL1`UZ6Af)NTvmT~g)4C?Ax2J!0Z9}t9qZLXwoyDMw$B&wq2y9Bwpd!m89$g}-@ zP_~<)s&;+@>NEa6!FDuZI)-xATZD4<&&w@1qzCK;d4>jae{NDu8~?P`wSISmaz0L0 z^*wxoq8ch%Lu-E}{9^lVs$cHj0o{E(+=8%QdZ2D#4hPMjB~WaIk#7DGxIVgjhXmXC z2Y7gzA~*?=rZ{Qw9R;O-9zI@PEboUr`-95^vnGG!>32t^4V6|`ng@z4BC=~OZGSug z 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 z zllRZbe!rcS+6QWP?MB%IxFt%C!mDECyY8s!yjzGR$&sLC?PFY3@#gW!(;2gH z&~5?mQb%XABiLyRR@;%w*J_vd&T7lENYeS2!0&JFKvyG&4(w0?QVDtTkhnPc0Gpr1 zF%q$Ts5Mnz-;Bl6`FwGL8l9;hGUJc>Ax#Sb+l5cJkd*bIMg{IY>K7!^=m|g_UjNtN zg$IS?P$C4yrmULuPB>Z`26&knRm|pf+G6oAR14sEiXE<0j@XD zoppdiOZxFmz5iVS|H;q2&MQAuK~M%CGL~1yE`hg-i(1<@D-jx8!|1vt#&3Q{VzoC5 z9;Y5h`#WIEic;o&|K?Hu&SM{-JJjl^e&Tac>qje+WO6}p3W>Q&bwj41y2>*@=O}E& zJjn*B={oJHUjE({AIT9qinR7b1YIKQf_9$MvW)oj6p*hk&<)p7d6$g3@25)_xxt9e zI(_w?-UWldT1xwvtzDgLclkfG1#y_|+A-Fz8!jZaf#snt(1d%DrTmU;3uRCD&)wPmG3k>NzzqPp zWY?>(!tl}BT)0%`A$Ck_xwe=t7DH8^s}K(553aIcf;XYZ^rbMLezpp+mSz$#un*KQ zj&fP|ndRz{vxqYS&x=5yn=4zhR;)fqG_@IvzWjYjsm!PEYnvw4V+0>nt+%oLy21Vo077HNW=6Lwxu5@(*x>fv(bw zzqx&YuzFO9|5e2}X*=Ldj`7 zkk%O3A3|8YOw_1|4&iA{vQqv+yEHPK;I4oFQSk443;qAxrAg1&rpWFnG=cE2e!N^Z zQj%&AS`{=4Bfq2#c(pu2U~Rh{3zaXHHZQ+ZcIJ3vmj0(0`@I=M8+?__@1DAVe8Yfl zV-onIVoEI<#QV5bCfKcmYOyaT*5RnpeW+`=LJrXWDdQ=N@+q}Z)*V&IbDuZtXXl9e zbm5ftxq=Ms;fdZm0^D$*t43++R<{zO;`~-P{XWz0fet>Bsy42UlN&;2J1h_aS$&e( zdseru&iDEO{PcTf;I+5p{hepL6xv8lua_=$0lPPL=UbME-Rk4{MpgIX(y$TYbg=Tr4G+z46@MrSK)x|Rw;&y@ zoiB7!%8Az@h!ttT&IVvNMWdZ1MH!KGj6RGO6oY>*~(0BAejH z$E@Gy>Fr#582~pH=mzEq52v>D3-O>fY>*PMPHY%%fQKdYW+Z~MM_rm7;(bL@Ac!fz zxV4?$aoSLK-awGxoD4`_l`pWZ5@d#MM-fu_4q?9 ze{H(o8Fh6wW-EzzsE>1Cx+5Y^NngylkR^IC!BNe-g6NUl>p{i-lXZX_4|M4rQ8w$n zh`@S8s2B>qLAS4;ASb3LagnowsdUbc?V!8JAR(B%e|6jDBFT2)M}g3qRUiu(JC4H1`f z2*R=s60}J$OzT1w_XB5PiVZrHu`VybO$53s`Eb=Sdfq-Gj3g@ABU9juWp?Rtv!&m5 z)ABRDm2-lz_q>!fP3;0P^6U%>apYXmVyCp9rT8t&xLZr1XDB-X?pL52iabGSV3}EM%CqBhK-3CCmB)iJpZKz@`3W90;4u= z6LNrAQ{Vm@ijA3Hi6m>+8`i-sD?q-t%+1Dyp*Bw%6#!qoPr0baSiJ9er;nqc8JGRbP6yynu23F{QA89wF+%V0oEC z%;YV=O$EAVXBn7y+5=v9Ya5!SojqdyHoaKoFpMq6kU1%=u<7;$2eqX-3jrgHm3Xp? z+kx1QwK*EnNe%J*!}yQxVt6wEHx20Ka%FNzW<1c5)-ciKM180fS}RSmW0ZhRAgwq+ z)Z5n3iyOsiELE?-rj(7_8w`d?vq29k^WNnySO}f!Y!n8r6H5oWpShSj{L5KM2uo0o zycpO%8t=oR_4d6RI)(h*TVX`sMQ6^37k>Px396xjb3Wk3 zmWugaY_OqIw9K28vjwdilO9{7@}b~v8NB}Z*>OYovHjn7k$?BÐRL1I=cTVL_|G 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 Qk+s}MMyUVzfBN750sNWLm;e9( delta 65122 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 Rr`O3%c=}}>`Wg7?{|9gtl;Z#Z diff --git a/config.json b/config.json new file mode 100644 index 000000000..765c9d223 --- /dev/null +++ b/config.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { + "onlyUpdatePeerDependentsWhenOutOfRange": true + }, + "ignore": [] +} diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json index f973d347a..7bfa3a8d0 100644 --- a/coverage/coverage-final.json +++ b/coverage/coverage-final.json @@ -1,19 +1,52 @@ -{"/Users/joepegler/Workspace/sdk/src/account/signerToSmartAccount.ts": {"path":"/Users/joepegler/Workspace/sdk/src/account/signerToSmartAccount.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":14}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":11}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":20}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":17}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":17}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":27}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":12}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":22}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":21}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":13}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":69}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":43}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":74}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":64}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":8}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":21}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":21}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":17}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":24}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":77}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":8}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":11}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":23}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":25}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":17}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":16}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":27}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":13}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":29}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":30}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":15}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":9}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":14}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":21}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":25}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":66}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":8}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":21}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":35}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":33}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":28}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":29}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":47}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":46}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":3}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":89}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":81}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":2}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":43}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":42}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":44}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":41}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":35}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":8}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":8}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":15}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":4}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":16}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":15}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":24}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":21}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":56}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":32}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":45}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":25}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":40}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":17}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":4}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":32}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":29}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":28}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":48}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":48}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":4}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":1}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":3}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":78}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":2}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":83}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":2}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":67}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":59}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":65}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":116}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":2}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":11}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":16}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":2}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":39}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":60}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":6}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":2}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":39}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":21}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":61}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":7}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":2}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":25}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":59}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":61}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":72}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":6}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":2}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":6}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":3}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":41}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":47}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":36}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":11}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":11}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":17}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":34}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":31}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":15}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":5}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":3}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":6}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":55}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":24}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":42}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":65}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":44}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":26}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":72}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":3}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":39}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":67}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":3}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":0}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":36}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":21}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":33}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":59}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":5}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":3}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":60}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":33}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":37}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":39}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":24}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":7}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":84}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":29}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":63}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":0}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":50}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":46}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":78}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":44}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":61}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":65}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":4}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":0}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":32}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":24}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":32}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":47}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":63}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":6}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":0}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":67}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":58}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":11}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":18}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":3}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":0}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":25}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":28}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":53}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":36}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":66}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":6}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":34}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":59}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":6}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":24}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":67}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":79}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":65}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":72}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":15}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":9}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":30}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":22}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":9}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":7}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":6}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":19}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":30}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":43}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":37}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":22}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":45}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":6}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":7}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":71}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":67}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":50}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":7}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":65}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":51}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":28}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":18}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":59}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":9}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":8}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":0}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":61}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":45}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":63}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":7}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":39}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":6}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":7}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":70}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":71}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":90}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":69}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":7}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":25}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":43}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":0}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":58}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":15}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":22}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":7}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":0}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":43}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":0}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":24}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":66}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":34}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":36}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":50}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":55}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":10}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":8}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":6}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":7}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":74}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":94}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":7}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":24}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":48}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":0}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":58}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":15}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":22}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":7}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":0}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":48}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":0}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":34}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":6}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":7}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":63}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":67}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":74}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":98}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":7}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":28}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":48}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":0}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":58}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":15}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":22}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":7}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":0}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":48}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":0}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":31}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":6}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":35}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":74}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":6}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":7}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":75}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":59}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":70}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":48}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":38}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":7}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":61}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":32}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":32}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":35}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":21}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":23}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":19}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":11}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":0}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":35}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":34}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":43}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":17}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":39}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":42}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":40}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":11}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":10}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":7}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":43}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":19}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":21}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":17}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":7}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":29}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":33}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":32}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":36}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":31}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":8}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":6}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":45}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":147}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":5}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":4}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":3,"117":3,"118":3,"119":3,"120":3,"121":3,"122":3,"123":3,"124":3,"125":3,"126":3,"127":3,"128":3,"129":3,"130":3,"131":3,"132":3,"133":3,"134":3,"135":3,"136":3,"137":3,"138":3,"139":1,"140":1,"141":2,"142":2,"143":2,"144":2,"145":0,"146":0,"147":2,"148":2,"149":2,"150":2,"151":2,"152":2,"153":2,"154":2,"155":2,"156":2,"157":2,"158":2,"159":2,"160":2,"161":2,"162":3,"163":3,"164":3,"165":3,"166":2,"167":2,"168":0,"169":0,"170":0,"171":0,"172":0,"173":2,"174":3,"175":2,"176":2,"177":2,"178":2,"179":2,"180":2,"181":2,"182":2,"183":2,"184":2,"185":1,"186":1,"187":2,"188":0,"189":0,"190":2,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":2,"203":2,"204":2,"205":2,"206":2,"207":2,"208":2,"209":2,"210":2,"211":2,"212":2,"213":2,"214":2,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":2,"229":2,"230":2,"231":2,"232":2,"233":2,"234":2,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":2,"254":2,"255":2,"256":2,"257":2,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":2,"270":2,"271":2,"272":2,"273":2,"274":2,"275":2,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":2,"288":0,"289":0,"290":2,"291":2,"292":2,"293":2,"294":2,"295":2,"296":2,"297":2,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":2,"329":0,"330":0,"331":2,"332":2},"branchMap":{"0":{"type":"branch","line":116,"loc":{"start":{"line":116,"column":34},"end":{"line":333,"column":1}},"locations":[{"start":{"line":116,"column":34},"end":{"line":333,"column":1}}]},"1":{"type":"branch","line":139,"loc":{"start":{"line":139,"column":38},"end":{"line":155,"column":7}},"locations":[{"start":{"line":139,"column":38},"end":{"line":155,"column":7}}]},"2":{"type":"branch","line":139,"loc":{"start":{"line":139,"column":38},"end":{"line":141,"column":3}},"locations":[{"start":{"line":139,"column":38},"end":{"line":141,"column":3}}]},"3":{"type":"branch","line":155,"loc":{"start":{"line":155,"column":5},"end":{"line":162,"column":78}},"locations":[{"start":{"line":155,"column":5},"end":{"line":162,"column":78}}]},"4":{"type":"branch","line":165,"loc":{"start":{"line":165,"column":18},"end":{"line":165,"column":63}},"locations":[{"start":{"line":165,"column":18},"end":{"line":165,"column":63}}]},"5":{"type":"branch","line":165,"loc":{"start":{"line":165,"column":59},"end":{"line":165,"column":65}},"locations":[{"start":{"line":165,"column":59},"end":{"line":165,"column":65}}]},"6":{"type":"branch","line":166,"loc":{"start":{"line":166,"column":3},"end":{"line":175,"column":29}},"locations":[{"start":{"line":166,"column":3},"end":{"line":175,"column":29}}]},"7":{"type":"branch","line":175,"loc":{"start":{"line":175,"column":23},"end":{"line":175,"column":67}},"locations":[{"start":{"line":175,"column":23},"end":{"line":175,"column":67}}]},"8":{"type":"branch","line":175,"loc":{"start":{"line":175,"column":66},"end":{"line":333,"column":1}},"locations":[{"start":{"line":175,"column":66},"end":{"line":333,"column":1}}]},"9":{"type":"branch","line":185,"loc":{"start":{"line":185,"column":4},"end":{"line":187,"column":6}},"locations":[{"start":{"line":185,"column":4},"end":{"line":187,"column":6}}]},"10":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":4},"end":{"line":202,"column":6}},"locations":[{"start":{"line":191,"column":4},"end":{"line":202,"column":6}}]},"11":{"type":"branch","line":207,"loc":{"start":{"line":207,"column":4},"end":{"line":209,"column":6}},"locations":[{"start":{"line":207,"column":4},"end":{"line":209,"column":6}}]},"12":{"type":"branch","line":215,"loc":{"start":{"line":215,"column":4},"end":{"line":228,"column":6}},"locations":[{"start":{"line":215,"column":4},"end":{"line":228,"column":6}}]}},"b":{"0":[3],"1":[2],"2":[1],"3":[2],"4":[0],"5":[2],"6":[2],"7":[0],"8":[2],"9":[1],"10":[1],"11":[2],"12":[1]},"fnMap":{"0":{"name":"getAccountInitCode","decl":{"start":{"line":60,"column":27},"end":{"line":84,"column":1}},"loc":{"start":{"line":60,"column":27},"end":{"line":84,"column":1}},"line":60},"1":{"name":"signerToSmartAccount","decl":{"start":{"line":116,"column":34},"end":{"line":333,"column":1}},"loc":{"start":{"line":116,"column":34},"end":{"line":333,"column":1}},"line":116},"2":{"name":"signTransaction","decl":{"start":{"line":145,"column":21},"end":{"line":147,"column":5}},"loc":{"start":{"line":145,"column":21},"end":{"line":147,"column":5}},"line":145},"3":{"name":"generateInitCode","decl":{"start":{"line":168,"column":27},"end":{"line":173,"column":6}},"loc":{"start":{"line":168,"column":27},"end":{"line":173,"column":6}},"line":168},"4":{"name":"signMessage","decl":{"start":{"line":185,"column":4},"end":{"line":187,"column":6}},"loc":{"start":{"line":185,"column":4},"end":{"line":187,"column":6}},"line":185},"5":{"name":"signTransaction","decl":{"start":{"line":188,"column":4},"end":{"line":190,"column":6}},"loc":{"start":{"line":188,"column":4},"end":{"line":190,"column":6}},"line":188},"6":{"name":"signTypedData","decl":{"start":{"line":191,"column":4},"end":{"line":202,"column":6}},"loc":{"start":{"line":191,"column":4},"end":{"line":202,"column":6}},"line":191},"7":{"name":"getNonce","decl":{"start":{"line":207,"column":4},"end":{"line":209,"column":6}},"loc":{"start":{"line":207,"column":4},"end":{"line":209,"column":6}},"line":207},"8":{"name":"signUserOperation","decl":{"start":{"line":215,"column":4},"end":{"line":228,"column":6}},"loc":{"start":{"line":215,"column":4},"end":{"line":228,"column":6}},"line":215},"9":{"name":"getInitCode","decl":{"start":{"line":235,"column":4},"end":{"line":253,"column":6}},"loc":{"start":{"line":235,"column":4},"end":{"line":253,"column":6}},"line":235},"10":{"name":"getFactory","decl":{"start":{"line":258,"column":4},"end":{"line":269,"column":6}},"loc":{"start":{"line":258,"column":4},"end":{"line":269,"column":6}},"line":258},"11":{"name":"getFactoryData","decl":{"start":{"line":276,"column":4},"end":{"line":287,"column":6}},"loc":{"start":{"line":276,"column":4},"end":{"line":287,"column":6}},"line":276},"12":{"name":"encodeDeployCallData","decl":{"start":{"line":288,"column":4},"end":{"line":290,"column":6}},"loc":{"start":{"line":288,"column":4},"end":{"line":290,"column":6}},"line":288},"13":{"name":"encodeCallData","decl":{"start":{"line":298,"column":4},"end":{"line":328,"column":6}},"loc":{"start":{"line":298,"column":4},"end":{"line":328,"column":6}},"line":298},"14":{"name":"getDummySignature","decl":{"start":{"line":329,"column":4},"end":{"line":331,"column":5}},"loc":{"start":{"line":329,"column":4},"end":{"line":331,"column":5}},"line":329}},"f":{"0":0,"1":3,"2":0,"3":0,"4":1,"5":0,"6":1,"7":2,"8":1,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0}} -,"/Users/joepegler/Workspace/sdk/src/account/index.ts": {"path":"/Users/joepegler/Workspace/sdk/src/account/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":60}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":0}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":59}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":0}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":69}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} -,"/Users/joepegler/Workspace/sdk/src/account/actions/getAccountAddress.ts": {"path":"/Users/joepegler/Workspace/sdk/src/account/actions/getAccountAddress.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":21}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":21}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":14}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":11}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":43}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":50}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":68}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":64}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":3}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":58}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":2}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":61}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":72}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":78}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":65}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":66}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":58}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":61}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":41}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":17}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":22}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":25}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":19}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":12}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":60}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":71}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":7}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":51}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":27}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":27}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":13}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":31}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":44}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":32}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":7}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":6}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":40}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":27}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":70}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":5}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":27}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":19}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":31}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":73}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":7}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":5}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":31}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":27}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":11}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":31}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":23}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":6}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":19}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":69}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":2,"26":2,"27":2,"28":2,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2,"63":0,"64":0,"65":2},"branchMap":{"0":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":33},"end":{"line":66,"column":1}},"locations":[{"start":{"line":25,"column":33},"end":{"line":66,"column":1}}]},"1":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":3}},"locations":[{"start":{"line":63,"column":2},"end":{"line":65,"column":3}}]}},"b":{"0":[2],"1":[0]},"fnMap":{"0":{"name":"getAccountAddress","decl":{"start":{"line":25,"column":33},"end":{"line":66,"column":1}},"loc":{"start":{"line":25,"column":33},"end":{"line":66,"column":1}},"line":25}},"f":{"0":2}} -,"/Users/joepegler/Workspace/sdk/src/account/utils/abis.ts": {"path":"/Users/joepegler/Workspace/sdk/src/account/utils/abis.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":3}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":87}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":3}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":35}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":3}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":13}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":7}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":32}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":21}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":23}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":8}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":7}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":32}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":22}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":23}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":8}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":7}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":30}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":21}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":21}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":7}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":6}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":24}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":16}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":34}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":20}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":4}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":13}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":7}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":34}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":21}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":25}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":8}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":7}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":34}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":22}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":25}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":8}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":7}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":32}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":21}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":23}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":7}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":6}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":29}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":16}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":34}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":20}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":10}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":3}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":95}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":32}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":13}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":7}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":32}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":24}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":23}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":8}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":7}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":32}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":36}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":23}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":8}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":7}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":30}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":32}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":21}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":7}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":6}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":17}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":14}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":7}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":32}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":17}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":23}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":7}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":6}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":34}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":20}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":4}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":3}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":13}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":7}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":32}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":25}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":23}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":7}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":6}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":32}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":14}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":7}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":32}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":17}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":23}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":7}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":6}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":34}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":20}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":3}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":1}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":0}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":35}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":3}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":21}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":13}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":7}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":22}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":32}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":24}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":23}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":8}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":7}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":22}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":32}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":34}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":23}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":8}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":7}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":22}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":32}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":22}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":23}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":7}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":6}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":28}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":17}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":4}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":3}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":21}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":13}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":7}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":22}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":32}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":24}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":23}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":8}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":7}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":22}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":32}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":34}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":23}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":7}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":6}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":40}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":17}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":4}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":3}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":15}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":32}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":14}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":7}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":30}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":17}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":21}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":7}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":6}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":28}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":20}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":4}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":3}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":13}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":7}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":32}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":36}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":23}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":8}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":7}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":30}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":32}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":21}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":7}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":6}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":26}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":14}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":7}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":32}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":22}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":23}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":7}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":6}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":34}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":20}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":4}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":3}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":13}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":7}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":32}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":36}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":23}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":8}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":7}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":30}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":32}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":21}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":8}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":7}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":32}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":22}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":23}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":7}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":6}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":40}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":14}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":7}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":32}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":22}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":23}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":7}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":6}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":34}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":20}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":4}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":3}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":13}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":7}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":32}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":36}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":23}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":8}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":7}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":30}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":32}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":21}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":8}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":7}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":32}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":22}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":23}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":7}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":6}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":47}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":14}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":7}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":32}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":25}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":23}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":7}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":6}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":28}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":20}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":3}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":10}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} -,"/Users/joepegler/Workspace/sdk/src/account/utils/constants.ts": {"path":"/Users/joepegler/Workspace/sdk/src/account/utils/constants.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":41}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":46}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":0}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":59}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":45}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":46}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":60}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":54}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":49}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":46}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":60}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":55}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":54}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":52}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":46}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":67}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":54}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":1}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":80}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":40}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":46}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":66}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":54}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":1}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":54}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":74}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":26}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":73}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":91}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":77}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":87}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":69}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":1}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":43}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":582}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":47}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":46}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":78}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} -,"/Users/joepegler/Workspace/sdk/src/account/utils/errors.ts": {"path":"/Users/joepegler/Workspace/sdk/src/account/utils/errors.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":0}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":74}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":61}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":57}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":10}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":7}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":102}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":45}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":19}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":7}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":17}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":27}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":7}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":5}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1},"branchMap":{"0":{"type":"branch","line":5,"loc":{"start":{"line":5,"column":2},"end":{"line":16,"column":3}},"locations":[{"start":{"line":5,"column":2},"end":{"line":16,"column":3}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"SignTransactionNotSupportedBySmartAccount","decl":{"start":{"line":5,"column":2},"end":{"line":16,"column":3}},"loc":{"start":{"line":5,"column":2},"end":{"line":16,"column":3}},"line":5}},"f":{"0":1}} -,"/Users/joepegler/Workspace/sdk/src/account/utils/helpers.ts": {"path":"/Users/joepegler/Workspace/sdk/src/account/utils/helpers.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":11}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":14}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":20}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":34}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":11}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":23}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":17}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":27}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":9}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":22}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":12}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":20}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":13}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":71}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":13}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":29}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":30}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":15}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":21}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":19}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":41}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":66}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":60}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":71}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":59}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":52}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":3}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":54}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":40}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":97}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":89}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":3}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":49}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":54}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":2}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":56}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":42}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":10}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":42}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":18}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":21}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":44}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":25}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":13}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":8}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":30}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":25}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":50}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":6}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":24}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":67}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":79}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":65}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":70}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":21}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":9}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":40}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":22}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":9}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":7}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":5}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":3}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":1}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":62}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":74}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":53}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":105}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":45}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":17}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":18}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":24}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":50}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":20}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":4}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":40}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":15}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":3}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":14}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":1}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":50}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":74}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":73}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":2}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":74}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":70}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":67}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":40}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":3}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":31}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":17}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":18}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":19}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":23}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":34}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":7}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":33}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":42}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":12}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":9}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":19}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":13}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":29}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":29}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":14}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":13}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":26}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":29}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":13}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":12}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":27}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":20}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":13}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":28}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":29}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":13}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":12}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":34}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":26}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":9}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":8}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":31}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":40}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":6}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":15}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":20}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":3}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":1}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":0}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":19}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":70}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":0}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":77}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":16}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":40}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":3}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":72}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":1}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":0}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":3}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":43}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":45}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":33}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":65}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":43}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":3}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":37}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":30}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":18}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":29}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":11}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":63}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":34}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":52}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":5}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":17}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":73}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":21}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":5}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":3}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":23}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":1}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":3}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":49}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":2}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":42}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":105}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":50}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":85}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":3}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":27}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":26}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":21}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":14}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":59}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":48}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":21}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":31}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":25}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":98}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":8}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":7}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":25}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":17}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":38}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":38}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":24}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":32}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":30}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":24}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":32}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":45}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":7}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":5}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":3}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":91}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":29}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":23}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":97}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":6}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":5}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":23}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":15}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":25}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":25}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":22}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":30}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":28}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":22}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":30}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":33}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":25}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":5}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":3}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":1}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":0}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":3}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":57}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":2}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":68}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":63}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":46}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":44}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":36}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":33}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":29}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":21}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":51}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":38}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":29}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":37}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":37}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":52}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":52}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":22}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":12}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":12}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":25}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":27}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":23}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":12}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":12}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":25}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":27}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":23}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":14}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":23}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":77}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":29}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":11}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":12}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":15}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":58}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":77}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":62}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":103}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":3}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":31}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":38}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":50}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":34}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":42}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":54}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":45}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":3}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":10}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":26}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":9}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":9}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":13}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":11}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":14}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":13}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":17}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":17}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":20}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":23}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":20}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":14}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":15}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":21}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":17}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":47}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":34}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":25}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":33}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":33}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":48}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":48}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":19}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":9}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":9}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":21}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":23}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":19}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":9}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":9}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":21}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":23}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":19}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":11}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":19}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":69}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":26}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":8}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":9}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":12}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":54}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":73}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":64}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":29}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":21}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":71}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":70}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":54}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":0}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":38}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":0}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":52}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":9}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":11}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":28}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":34}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":12}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":11}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":26}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":35}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":12}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":11}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":26}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":44}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":11}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":10}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":9}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":84}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":88}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":19}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":9}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":7}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":0}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":53}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":6}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":41}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":70}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":77}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":0}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":38}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":0}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":52}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":9}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":11}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":28}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":34}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":12}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":11}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":26}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":35}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":12}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":11}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":26}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":44}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":11}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":10}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":9}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":84}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":88}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":19}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":9}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":7}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":0}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":53}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":6}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":34}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":59}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":5}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":4}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":0}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":10}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":15}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":11}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":11}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":28}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":18}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":15}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":23}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":13}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":16}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":15}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":19}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":19}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":22}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":25}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":21}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":65}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":1}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":0}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":3}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":68}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":2}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":17}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":56}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":38}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":3}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":53}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":46}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":17}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":31}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":27}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":5}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":3}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":41}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":3,"42":3,"43":3,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":2,"52":2,"53":2,"54":2,"55":2,"56":2,"57":3,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":3,"70":3,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":4,"80":4,"81":4,"82":4,"83":4,"84":4,"85":4,"86":4,"87":4,"88":4,"89":0,"90":0,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":2,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":2,"115":2,"116":2,"117":2,"118":2,"119":2,"120":2,"121":2,"122":2,"123":2,"124":2,"125":2,"126":2,"127":2,"128":2,"129":2,"130":2,"131":2,"132":2,"133":2,"134":2,"135":2,"136":2,"137":2,"138":0,"139":0,"140":2,"141":1,"142":1,"143":1,"144":1,"145":1,"146":3,"147":0,"148":0,"149":3,"150":3,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":2,"273":2,"274":2,"275":2,"276":2,"277":2,"278":2,"279":2,"280":2,"281":2,"282":2,"283":2,"284":2,"285":2,"286":2,"287":2,"288":2,"289":2,"290":2,"291":2,"292":2,"293":2,"294":2,"295":2,"296":2,"297":2,"298":2,"299":2,"300":2,"301":2,"302":2,"303":2,"304":2,"305":2,"306":2,"307":2,"308":2,"309":2,"310":2,"311":2,"312":2,"313":2,"314":2,"315":2,"316":2,"317":2,"318":2,"319":2,"320":2,"321":2,"322":2,"323":2,"324":2,"325":2,"326":2,"327":1,"328":1,"329":1,"330":1,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"343":0,"344":0,"345":0,"346":0,"347":0,"348":0,"349":1,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":2,"357":1,"358":1,"359":1,"360":1,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":0,"374":0,"375":0,"376":0,"377":0,"378":0,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":2,"387":1,"388":1,"389":2,"390":2,"391":2,"392":2,"393":2,"394":2,"395":2,"396":2,"397":2,"398":2,"399":2,"400":2,"401":2,"402":2,"403":2,"404":2,"405":2,"406":2,"407":2,"408":2,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":4,"419":608,"420":608,"421":4,"422":4,"423":608,"424":0,"425":0},"branchMap":{"0":{"type":"branch","line":41,"loc":{"start":{"line":41,"column":7},"end":{"line":71,"column":1}},"locations":[{"start":{"line":41,"column":7},"end":{"line":71,"column":1}}]},"1":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":17},"end":{"line":57,"column":6}},"locations":[{"start":{"line":51,"column":17},"end":{"line":57,"column":6}}]},"2":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":4},"end":{"line":69,"column":5}},"locations":[{"start":{"line":58,"column":4},"end":{"line":69,"column":5}}]},"3":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":38},"end":{"line":91,"column":1}},"locations":[{"start":{"line":79,"column":38},"end":{"line":91,"column":1}}]},"4":{"type":"branch","line":87,"loc":{"start":{"line":87,"column":21},"end":{"line":87,"column":36}},"locations":[{"start":{"line":87,"column":21},"end":{"line":87,"column":36}}]},"5":{"type":"branch","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":91,"column":1}},"locations":[{"start":{"line":89,"column":2},"end":{"line":91,"column":1}}]},"6":{"type":"branch","line":103,"loc":{"start":{"line":103,"column":24},"end":{"line":141,"column":1}},"locations":[{"start":{"line":103,"column":24},"end":{"line":141,"column":1}}]},"7":{"type":"branch","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":140,"column":3}},"locations":[{"start":{"line":138,"column":2},"end":{"line":140,"column":3}}]},"8":{"type":"branch","line":146,"loc":{"start":{"line":146,"column":30},"end":{"line":151,"column":1}},"locations":[{"start":{"line":146,"column":30},"end":{"line":151,"column":1}}]},"9":{"type":"branch","line":147,"loc":{"start":{"line":147,"column":15},"end":{"line":149,"column":3}},"locations":[{"start":{"line":147,"column":15},"end":{"line":149,"column":3}}]},"10":{"type":"branch","line":160,"loc":{"start":{"line":160,"column":36},"end":{"line":175,"column":1}},"locations":[{"start":{"line":160,"column":36},"end":{"line":175,"column":1}}]},"11":{"type":"branch","line":170,"loc":{"start":{"line":170,"column":6},"end":{"line":170,"column":46}},"locations":[{"start":{"line":170,"column":6},"end":{"line":170,"column":46}}]},"12":{"type":"branch","line":185,"loc":{"start":{"line":185,"column":26},"end":{"line":229,"column":1}},"locations":[{"start":{"line":185,"column":26},"end":{"line":229,"column":1}}]},"13":{"type":"branch","line":190,"loc":{"start":{"line":190,"column":4},"end":{"line":190,"column":48}},"locations":[{"start":{"line":190,"column":4},"end":{"line":190,"column":48}}]},"14":{"type":"branch","line":209,"loc":{"start":{"line":209,"column":2},"end":{"line":229,"column":1}},"locations":[{"start":{"line":209,"column":2},"end":{"line":229,"column":1}}]},"15":{"type":"branch","line":272,"loc":{"start":{"line":272,"column":7},"end":{"line":409,"column":1}},"locations":[{"start":{"line":272,"column":7},"end":{"line":409,"column":1}}]},"16":{"type":"branch","line":327,"loc":{"start":{"line":327,"column":17},"end":{"line":356,"column":6}},"locations":[{"start":{"line":327,"column":17},"end":{"line":356,"column":6}}]},"17":{"type":"branch","line":331,"loc":{"start":{"line":331,"column":29},"end":{"line":349,"column":84}},"locations":[{"start":{"line":331,"column":29},"end":{"line":349,"column":84}}]},"18":{"type":"branch","line":350,"loc":{"start":{"line":350,"column":32},"end":{"line":350,"column":88}},"locations":[{"start":{"line":350,"column":32},"end":{"line":350,"column":88}}]},"19":{"type":"branch","line":357,"loc":{"start":{"line":357,"column":19},"end":{"line":386,"column":6}},"locations":[{"start":{"line":357,"column":19},"end":{"line":386,"column":6}}]},"20":{"type":"branch","line":361,"loc":{"start":{"line":361,"column":29},"end":{"line":379,"column":84}},"locations":[{"start":{"line":361,"column":29},"end":{"line":379,"column":84}}]},"21":{"type":"branch","line":380,"loc":{"start":{"line":380,"column":32},"end":{"line":380,"column":88}},"locations":[{"start":{"line":380,"column":32},"end":{"line":380,"column":88}}]},"22":{"type":"branch","line":387,"loc":{"start":{"line":387,"column":4},"end":{"line":389,"column":5}},"locations":[{"start":{"line":387,"column":4},"end":{"line":389,"column":5}}]},"23":{"type":"branch","line":418,"loc":{"start":{"line":418,"column":24},"end":{"line":426,"column":1}},"locations":[{"start":{"line":418,"column":24},"end":{"line":426,"column":1}}]},"24":{"type":"branch","line":419,"loc":{"start":{"line":419,"column":45},"end":{"line":424,"column":3}},"locations":[{"start":{"line":419,"column":45},"end":{"line":424,"column":3}}]},"25":{"type":"branch","line":421,"loc":{"start":{"line":421,"column":30},"end":{"line":423,"column":5}},"locations":[{"start":{"line":421,"column":30},"end":{"line":423,"column":5}}]},"26":{"type":"branch","line":424,"loc":{"start":{"line":424,"column":2},"end":{"line":426,"column":1}},"locations":[{"start":{"line":424,"column":2},"end":{"line":426,"column":1}}]}},"b":{"0":[3],"1":[2],"2":[1],"3":[4],"4":[0],"5":[0],"6":[2],"7":[0],"8":[3],"9":[0],"10":[1],"11":[0],"12":[1],"13":[0],"14":[0],"15":[2],"16":[1],"17":[0],"18":[0],"19":[1],"20":[0],"21":[0],"22":[1],"23":[4],"24":[608],"25":[4],"26":[0]},"fnMap":{"0":{"name":"walletClientToSmartAccountSigner","decl":{"start":{"line":41,"column":7},"end":{"line":71,"column":1}},"loc":{"start":{"line":41,"column":7},"end":{"line":71,"column":1}},"line":41},"1":{"name":"signMessage","decl":{"start":{"line":51,"column":17},"end":{"line":57,"column":6}},"loc":{"start":{"line":51,"column":17},"end":{"line":57,"column":6}},"line":51},"2":{"name":"signTypedData","decl":{"start":{"line":58,"column":4},"end":{"line":69,"column":5}},"loc":{"start":{"line":58,"column":4},"end":{"line":69,"column":5}},"line":58},"3":{"name":"isSmartAccountDeployed","decl":{"start":{"line":79,"column":38},"end":{"line":91,"column":1}},"loc":{"start":{"line":79,"column":38},"end":{"line":91,"column":1}},"line":79},"4":{"name":"getNonce","decl":{"start":{"line":103,"column":24},"end":{"line":141,"column":1}},"loc":{"start":{"line":103,"column":24},"end":{"line":141,"column":1}},"line":103},"5":{"name":"validateConfig","decl":{"start":{"line":146,"column":30},"end":{"line":151,"column":1}},"loc":{"start":{"line":146,"column":30},"end":{"line":151,"column":1}},"line":146},"6":{"name":"getUserOperationHash","decl":{"start":{"line":160,"column":36},"end":{"line":175,"column":1}},"loc":{"start":{"line":160,"column":36},"end":{"line":175,"column":1}},"line":160},"7":{"name":"packUserOp","decl":{"start":{"line":185,"column":26},"end":{"line":229,"column":1}},"loc":{"start":{"line":185,"column":26},"end":{"line":229,"column":1}},"line":185},"8":{"name":"toSmartAccount","decl":{"start":{"line":272,"column":7},"end":{"line":409,"column":1}},"loc":{"start":{"line":272,"column":7},"end":{"line":409,"column":1}},"line":272},"9":{"name":"signMessage","decl":{"start":{"line":327,"column":17},"end":{"line":356,"column":6}},"loc":{"start":{"line":327,"column":17},"end":{"line":356,"column":6}},"line":327},"10":{"name":"signTypedData","decl":{"start":{"line":357,"column":19},"end":{"line":386,"column":6}},"loc":{"start":{"line":357,"column":19},"end":{"line":386,"column":6}},"line":357},"11":{"name":"signTransaction","decl":{"start":{"line":387,"column":4},"end":{"line":389,"column":5}},"loc":{"start":{"line":387,"column":4},"end":{"line":389,"column":5}},"line":387},"12":{"name":"getChain","decl":{"start":{"line":418,"column":24},"end":{"line":426,"column":1}},"loc":{"start":{"line":418,"column":24},"end":{"line":426,"column":1}},"line":418}},"f":{"0":3,"1":2,"2":1,"3":4,"4":2,"5":3,"6":1,"7":1,"8":2,"9":1,"10":1,"11":1,"12":4}} -,"/Users/joepegler/Workspace/sdk/src/bundler/createBundlerClient.ts": {"path":"/Users/joepegler/Workspace/sdk/src/bundler/createBundlerClient.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":10}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":8}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":9}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":21}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":11}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":13}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":35}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":43}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":8}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":24}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":16}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":27}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":26}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":54}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":11}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":12}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":9}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":19}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":16}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":1}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":180}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":2}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":265}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":2}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":45}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":51}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":2}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":11}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":50}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":40}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":2}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":46}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":20}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":34}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":36}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":30}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":45}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":2}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":50}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":31}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":64}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":31}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":18}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":8}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":9}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":25}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":4}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":40}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":2,"56":2},"branchMap":{"0":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":35},"end":{"line":57,"column":1}},"locations":[{"start":{"line":43,"column":35},"end":{"line":57,"column":1}}]}},"b":{"0":[2]},"fnMap":{"0":{"name":"createBundlerClient","decl":{"start":{"line":43,"column":35},"end":{"line":57,"column":1}},"loc":{"start":{"line":43,"column":35},"end":{"line":57,"column":1}},"line":43}},"f":{"0":2}} -,"/Users/joepegler/Workspace/sdk/src/bundler/actions/chainId.ts": {"path":"/Users/joepegler/Workspace/sdk/src/bundler/actions/chainId.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":61}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":3}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":56}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":2}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":118}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":30}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":2}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":11}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":38}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":2}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":39}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":29}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":36}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":5}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":2}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":48}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":29}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":3}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":30}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":43}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":55}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":60}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":2}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":46}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":60}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1},"branchMap":{"0":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":23},"end":{"line":27,"column":60}},"locations":[{"start":{"line":21,"column":23},"end":{"line":27,"column":60}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"chainId","decl":{"start":{"line":21,"column":23},"end":{"line":27,"column":60}},"loc":{"start":{"line":21,"column":23},"end":{"line":27,"column":60}},"line":21}},"f":{"0":1}} -,"/Users/joepegler/Workspace/sdk/src/bundler/actions/index.ts": {"path":"/Users/joepegler/Workspace/sdk/src/bundler/actions/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":38}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":32}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":3}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":25}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":14}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":22}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":3}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":1}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":69}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":29}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":7}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":40}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":34}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":4}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":2,"15":2,"16":2},"branchMap":{"0":{"type":"branch","line":14,"loc":{"start":{"line":14,"column":2},"end":{"line":17,"column":4}},"locations":[{"start":{"line":14,"column":2},"end":{"line":17,"column":4}}]},"1":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":2},"end":{"line":17,"column":4}},"locations":[{"start":{"line":15,"column":2},"end":{"line":17,"column":4}}]},"2":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":13},"end":{"line":16,"column":34}},"locations":[{"start":{"line":16,"column":13},"end":{"line":16,"column":34}}]}},"b":{"0":[2],"1":[2],"2":[1]},"fnMap":{"0":{"name":"bundlerActions","decl":{"start":{"line":14,"column":2},"end":{"line":17,"column":4}},"loc":{"start":{"line":14,"column":2},"end":{"line":17,"column":4}},"line":14},"1":{"name":"chainId","decl":{"start":{"line":16,"column":13},"end":{"line":16,"column":34}},"loc":{"start":{"line":16,"column":13},"end":{"line":16,"column":34}},"line":16}},"f":{"0":2,"1":1}} -,"/Users/joepegler/Workspace/sdk/src/bundler/utils/helpers.ts": {"path":"/Users/joepegler/Workspace/sdk/src/bundler/utils/helpers.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":3}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":44}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":32}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":35}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":67}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":3}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":70}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":7}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":53}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":17}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":33}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":5}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":36}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":19}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":39}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":3}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":6,"8":6,"9":6,"10":6,"11":0,"12":0,"13":6,"14":6,"15":0,"16":0,"17":6},"branchMap":{"0":{"type":"branch","line":7,"loc":{"start":{"line":7,"column":44},"end":{"line":18,"column":1}},"locations":[{"start":{"line":7,"column":44},"end":{"line":18,"column":1}}]},"1":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":16},"end":{"line":13,"column":5}},"locations":[{"start":{"line":11,"column":16},"end":{"line":13,"column":5}}]},"2":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":2},"end":{"line":17,"column":3}},"locations":[{"start":{"line":15,"column":2},"end":{"line":17,"column":3}}]}},"b":{"0":[6],"1":[0],"2":[0]},"fnMap":{"0":{"name":"extractChainIdFromBundlerUrl","decl":{"start":{"line":7,"column":44},"end":{"line":18,"column":1}},"loc":{"start":{"line":7,"column":44},"end":{"line":18,"column":1}},"line":7}},"f":{"0":6}} -,"/Users/joepegler/Workspace/sdk/src/client/createSmartAccountClient.ts": {"path":"/Users/joepegler/Workspace/sdk/src/client/createSmartAccountClient.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":27}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":32}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":21}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":23}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":76}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":43}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":34}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":65}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":31}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":49}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":42}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":54}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":56}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":30}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":15}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":13}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":9}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":14}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":10}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":12}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":33}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":51}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":180}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":2}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":265}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":2}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":49}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":56}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":2}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":11}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":50}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":40}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":2}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":56}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":20}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":34}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":5}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":3}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":41}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":66}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":43}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":30}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":2}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":39}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":32}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":15}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":11}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":17}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":22}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":30}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":13}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":9}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":15}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":9}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":20}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":34}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":20}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":16}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":31}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":18}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":8}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":9}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":32}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":30}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":4}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":23}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":25}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":39}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":6}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":26}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":32}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":15}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":11}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":17}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":3}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1},"branchMap":{"0":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":7},"end":{"line":91,"column":1}},"locations":[{"start":{"line":51,"column":7},"end":{"line":91,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"createSmartAccountClient","decl":{"start":{"line":51,"column":7},"end":{"line":91,"column":1}},"loc":{"start":{"line":51,"column":7},"end":{"line":91,"column":1}},"line":51}},"f":{"0":1}} -,"/Users/joepegler/Workspace/sdk/src/modules/index.ts": {"path":"/Users/joepegler/Workspace/sdk/src/modules/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":23}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":12}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":25}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":107}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} -,"/Users/joepegler/Workspace/sdk/src/modules/ecdsaOwnershipValidationModule/createECDSAOwnershipModule.ts": {"path":"/Users/joepegler/Workspace/sdk/src/modules/ecdsaOwnershipValidationModule/createECDSAOwnershipModule.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":61}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":0}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":33}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":29}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":45}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":41}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":70}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":23}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":26}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":3}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":37}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":58}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":62}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":49}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":52}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":47}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":25}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":35}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":46}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":36}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":67}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":26}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":12}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":22}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":64}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":5}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":30}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":10}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":57}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":10}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":22}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":67}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":7}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":41}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":48}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":7}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":29}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":26}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":6}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":7}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":47}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":105}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":7}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":52}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":49}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":6}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":7}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":33}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":76}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":7}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":45}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":68}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":375}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":6}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":7}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":70}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":113}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":7}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":39}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":59}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":48}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":53}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":8}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":57}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":37}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":44}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":33}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":8}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":35}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":6}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":0}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":7}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":37}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":68}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":99}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":7}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":60}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":80}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":16}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":6}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":0}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":7}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":23}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":67}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":90}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":7}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":71}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":21}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":67}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":72}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":76}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":54}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":51}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":66}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":7}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":22}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":6}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":40}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":36}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":32}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":24}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":21}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":67}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":74}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":76}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":54}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":51}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":73}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":7}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":0}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":22}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":5}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":3}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":2,"21":2,"22":2,"23":2,"24":2,"25":0,"26":2,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":5,"48":5,"49":2,"50":2,"51":2,"52":2,"53":2,"54":1,"55":1,"56":2,"57":2,"58":2,"59":2,"60":2,"61":2,"62":0,"63":0,"64":0,"65":2,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":2,"74":2,"75":2,"76":2,"77":2,"78":2,"79":2,"80":2,"81":2,"82":2,"83":2,"84":2,"85":2,"86":2,"87":2,"88":2,"89":0,"90":0,"91":0,"92":2,"93":2,"94":2,"95":2,"96":2,"97":2,"98":2,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":2,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":2,"127":2},"branchMap":{"0":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":42},"end":{"line":128,"column":1}},"locations":[{"start":{"line":20,"column":42},"end":{"line":128,"column":1}}]},"1":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":34},"end":{"line":27,"column":13}},"locations":[{"start":{"line":25,"column":34},"end":{"line":27,"column":13}}]},"2":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":35},"end":{"line":35,"column":9}},"locations":[{"start":{"line":27,"column":35},"end":{"line":35,"column":9}}]},"3":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":4},"end":{"line":49,"column":6}},"locations":[{"start":{"line":47,"column":4},"end":{"line":49,"column":6}}]},"4":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":4},"end":{"line":56,"column":6}},"locations":[{"start":{"line":54,"column":4},"end":{"line":56,"column":6}}]},"5":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":4},"end":{"line":82,"column":6}},"locations":[{"start":{"line":71,"column":4},"end":{"line":82,"column":6}}]}},"b":{"0":[2],"1":[0],"2":[0],"3":[5],"4":[1],"5":[2]},"fnMap":{"0":{"name":"createECDSAOwnershipModule","decl":{"start":{"line":20,"column":42},"end":{"line":128,"column":1}},"loc":{"start":{"line":20,"column":42},"end":{"line":128,"column":1}},"line":20},"1":{"name":"getModuleAddress","decl":{"start":{"line":47,"column":4},"end":{"line":49,"column":6}},"loc":{"start":{"line":47,"column":4},"end":{"line":49,"column":6}},"line":47},"2":{"name":"getSigner","decl":{"start":{"line":54,"column":4},"end":{"line":56,"column":6}},"loc":{"start":{"line":54,"column":4},"end":{"line":56,"column":6}},"line":54},"3":{"name":"getDummySignature","decl":{"start":{"line":62,"column":4},"end":{"line":65,"column":6}},"loc":{"start":{"line":62,"column":4},"end":{"line":65,"column":6}},"line":62},"4":{"name":"getInitData","decl":{"start":{"line":71,"column":4},"end":{"line":82,"column":6}},"loc":{"start":{"line":71,"column":4},"end":{"line":82,"column":6}},"line":71},"5":{"name":"signUserOpHash","decl":{"start":{"line":89,"column":4},"end":{"line":92,"column":6}},"loc":{"start":{"line":89,"column":4},"end":{"line":92,"column":6}},"line":89},"6":{"name":"signMessage","decl":{"start":{"line":99,"column":4},"end":{"line":110,"column":6}},"loc":{"start":{"line":99,"column":4},"end":{"line":110,"column":6}},"line":99},"7":{"name":"signMessageSmartAccountSigner","decl":{"start":{"line":111,"column":4},"end":{"line":126,"column":5}},"loc":{"start":{"line":111,"column":4},"end":{"line":126,"column":5}},"line":111}},"f":{"0":2,"1":5,"2":1,"3":0,"4":2,"5":0,"6":0,"7":0}} -,"/Users/joepegler/Workspace/sdk/src/paymaster/createPaymasterClient.ts": {"path":"/Users/joepegler/Workspace/sdk/src/paymaster/createPaymasterClient.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":14}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":26}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":17}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":14}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":8}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":24}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":26}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":18}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":54}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":11}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":12}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":9}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":21}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":18}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":163}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":2}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":209}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":2}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":45}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":56}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":2}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":11}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":50}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":46}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":2}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":50}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":26}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":85}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":5}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":38}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":42}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":45}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":2}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":50}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":23}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":66}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":31}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":18}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":8}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":9}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":27}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":4}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":42}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":2,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":2},"branchMap":{"0":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":37},"end":{"line":56,"column":1}},"locations":[{"start":{"line":42,"column":37},"end":{"line":56,"column":1}}]}},"b":{"0":[2]},"fnMap":{"0":{"name":"createPaymasterClient","decl":{"start":{"line":42,"column":37},"end":{"line":56,"column":1}},"loc":{"start":{"line":42,"column":37},"end":{"line":56,"column":1}},"line":42}},"f":{"0":2}} -,"/Users/joepegler/Workspace/sdk/src/paymaster/actions/index.ts": {"path":"/Users/joepegler/Workspace/sdk/src/paymaster/actions/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":64}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":0}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":3}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":25}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":14}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":22}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":3}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":38}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":23}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":1}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":64}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":52}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":2,"16":2},"branchMap":{"0":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":32},"end":{"line":17,"column":2}},"locations":[{"start":{"line":15,"column":32},"end":{"line":17,"column":2}}]},"1":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":38},"end":{"line":17,"column":2}},"locations":[{"start":{"line":15,"column":38},"end":{"line":17,"column":2}}]},"2":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":24},"end":{"line":16,"column":52}},"locations":[{"start":{"line":16,"column":24},"end":{"line":16,"column":52}}]}},"b":{"0":[2],"1":[2],"2":[1]},"fnMap":{"0":{"name":"paymasterActions","decl":{"start":{"line":15,"column":32},"end":{"line":17,"column":2}},"loc":{"start":{"line":15,"column":32},"end":{"line":17,"column":2}},"line":15},"1":{"name":"sponsorUserOperation","decl":{"start":{"line":16,"column":24},"end":{"line":16,"column":52}},"loc":{"start":{"line":16,"column":24},"end":{"line":16,"column":52}},"line":16}},"f":{"0":2,"1":1}} -,"/Users/joepegler/Workspace/sdk/src/paymaster/actions/sponsorUserOperation.ts": {"path":"/Users/joepegler/Workspace/sdk/src/paymaster/actions/sponsorUserOperation.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":49}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":10}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":1}}},"s":{"0":1,"1":1,"2":1},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":36},"end":{"line":3,"column":1}},"locations":[{"start":{"line":1,"column":36},"end":{"line":3,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"sponsorUserOperation","decl":{"start":{"line":1,"column":36},"end":{"line":3,"column":1}},"loc":{"start":{"line":1,"column":36},"end":{"line":3,"column":1}},"line":1}},"f":{"0":1}} -,"/Users/joepegler/Workspace/sdk/src/paymaster/utils/helpers.ts": {"path":"/Users/joepegler/Workspace/sdk/src/paymaster/utils/helpers.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":3}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":46}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":32}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":35}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":67}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":3}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":72}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":7}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":40}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":17}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":43}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":5}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":36}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":19}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":39}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":3}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":0,"12":0,"13":1,"14":1,"15":0,"16":0,"17":1},"branchMap":{"0":{"type":"branch","line":7,"loc":{"start":{"line":7,"column":46},"end":{"line":18,"column":1}},"locations":[{"start":{"line":7,"column":46},"end":{"line":18,"column":1}}]},"1":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":16},"end":{"line":13,"column":5}},"locations":[{"start":{"line":11,"column":16},"end":{"line":13,"column":5}}]},"2":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":2},"end":{"line":17,"column":3}},"locations":[{"start":{"line":15,"column":2},"end":{"line":17,"column":3}}]}},"b":{"0":[1],"1":[0],"2":[0]},"fnMap":{"0":{"name":"extractChainIdFromPaymasterUrl","decl":{"start":{"line":7,"column":46},"end":{"line":18,"column":1}},"loc":{"start":{"line":7,"column":46},"end":{"line":18,"column":1}},"line":7}},"f":{"0":1}} +{"/Users/joepegler/Workspace/biconomy-client-sdk/src/index.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":25}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":27}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":25}}},"s":{"0":0,"1":0,"2":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":-40}},"locations":[{"start":{"line":1,"column":0},"end":{"line":3,"column":-40}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":3,"column":-40}},"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":-40}},"line":1}},"f":{"0":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/BaseSmartContractAccount.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/BaseSmartContractAccount.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":7}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":12}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":11}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":20}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":21}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":14}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":6}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":36}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":65}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":60}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":79}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":13}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":32}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":29}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":24}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":13}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":25}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":56}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":29}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":20}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":23}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":18}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":47}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":57}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":43}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":35}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":72}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":36}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":33}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":27}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":46}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":36}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":16}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":38}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":35}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":54}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":28}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":62}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":44}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":26}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":36}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":6}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":47}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":47}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":42}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":42}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":35}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":38}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":25}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":47}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":6}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":28}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":0}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":5}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":84}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":80}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":79}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":4}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":5}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":36}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":5}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":107}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":4}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":64}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":66}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":64}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":86}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":5}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":25}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":29}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":24}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":18}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":5}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":82}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":4}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":38}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":5}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":63}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":0}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":5}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":99}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":146}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":141}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":5}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":56}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":31}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":0}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":28}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":0}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":5}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":73}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":87}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":4}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":59}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":48}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":5}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":60}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":35}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":3}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":5}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":64}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":38}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":4}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":48}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":5}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":77}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":50}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":3}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":0}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":5}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":63}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":56}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":4}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":38}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":5}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":79}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":55}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":31}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":27}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":6}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":58}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":3}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":0}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":5}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":53}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":65}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":56}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":4}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":47}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":5}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":30}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":31}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":29}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":55}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":31}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":32}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":6}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":0}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":58}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":3}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":5}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":47}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":63}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":64}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":39}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":4}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":53}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":5}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":27}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":36}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":29}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":52}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":3}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":0}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":5}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":79}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":55}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":4}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":101}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":81}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":5}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":34}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":35}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":27}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":22}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":54}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":3}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":31}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":0}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":26}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":20}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":71}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":20}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":0}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":37}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":60}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":17}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":5}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":0}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":62}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":38}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":6}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":0}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":42}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":53}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":17}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":5}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":0}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":55}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":0}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":37}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":3}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":0}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":40}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":31}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":55}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":79}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":11}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":67}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":26}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":19}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":74}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":13}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":9}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":0}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":67}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":65}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":21}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":89}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":31}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":11}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":36}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":9}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":0}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":44}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":40}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":9}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":7}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":0}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":69}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":5}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":0}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":30}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":3}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":0}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":52}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":36}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":73}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":29}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":26}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":5}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":40}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":3}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":0}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":24}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":22}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":3}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":0}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":32}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":30}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":3}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":0}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":35}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":33}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":3}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":0}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":47}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":73}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":3}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":0}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":56}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":61}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":47}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":30}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":34}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":38}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":5}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":31}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":3}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":0}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":5}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":72}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":76}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":50}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":89}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":5}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":68}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":18}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":5}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":53}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":70}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":64}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":44}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":3}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":0}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":72}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":50}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":0}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":58}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":30}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":76}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":80}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":6}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":0}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":26}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":22}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":103}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":7}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":5}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":0}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":24}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":3}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":0}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":54}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":60}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":3}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":0}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":36}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":24}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":19}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":20}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":21}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":22}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":5}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":0}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":45}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":57}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":0}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":15}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":55}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":79}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":5}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":0}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":34}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":21}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":22}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":15}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":6}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":3}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":0,"124":0,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":0,"134":0,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":0,"179":0,"180":0,"181":0,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":1,"222":1,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":0,"265":0,"266":1,"267":1,"268":0,"269":0,"270":1,"271":1,"272":0,"273":0,"274":1,"275":1,"276":0,"277":0,"278":1,"279":1,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":1,"304":1,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":1,"322":1,"323":0,"324":0,"325":1,"326":1,"327":0,"328":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"343":0,"344":0,"345":0,"346":0,"347":0,"348":1},"branchMap":{"0":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":7},"end":{"line":25,"column":29}},"locations":[{"start":{"line":25,"column":7},"end":{"line":25,"column":29}}]}},"b":{"0":[5]},"fnMap":{"0":{"name":"BaseSmartContractAccount","decl":{"start":{"line":54,"column":2},"end":{"line":73,"column":3}},"loc":{"start":{"line":54,"column":2},"end":{"line":73,"column":3}},"line":54},"1":{"name":"signUserOperationHash","decl":{"start":{"line":123,"column":2},"end":{"line":125,"column":3}},"loc":{"start":{"line":123,"column":2},"end":{"line":125,"column":3}},"line":123},"2":{"name":"signTypedData","decl":{"start":{"line":133,"column":2},"end":{"line":135,"column":3}},"loc":{"start":{"line":133,"column":2},"end":{"line":135,"column":3}},"line":133},"3":{"name":"signMessageWith6492","decl":{"start":{"line":143,"column":2},"end":{"line":150,"column":3}},"loc":{"start":{"line":143,"column":2},"end":{"line":150,"column":3}},"line":143},"4":{"name":"signTypedDataWith6492","decl":{"start":{"line":159,"column":2},"end":{"line":168,"column":3}},"loc":{"start":{"line":159,"column":2},"end":{"line":168,"column":3}},"line":159},"5":{"name":"encodeBatchExecute","decl":{"start":{"line":178,"column":2},"end":{"line":182,"column":3}},"loc":{"start":{"line":178,"column":2},"end":{"line":182,"column":3}},"line":178},"6":{"name":"getInitCode","decl":{"start":{"line":204,"column":2},"end":{"line":221,"column":3}},"loc":{"start":{"line":204,"column":2},"end":{"line":221,"column":3}},"line":204},"7":{"name":"getAddress","decl":{"start":{"line":223,"column":2},"end":{"line":253,"column":3}},"loc":{"start":{"line":223,"column":2},"end":{"line":253,"column":3}},"line":223},"8":{"name":"getSigner","decl":{"start":{"line":264,"column":2},"end":{"line":266,"column":3}},"loc":{"start":{"line":264,"column":2},"end":{"line":266,"column":3}},"line":264},"9":{"name":"getFactoryAddress","decl":{"start":{"line":268,"column":2},"end":{"line":270,"column":3}},"loc":{"start":{"line":268,"column":2},"end":{"line":270,"column":3}},"line":268},"10":{"name":"getEntryPointAddress","decl":{"start":{"line":272,"column":2},"end":{"line":274,"column":3}},"loc":{"start":{"line":272,"column":2},"end":{"line":274,"column":3}},"line":272},"11":{"name":"isAccountDeployed","decl":{"start":{"line":276,"column":2},"end":{"line":278,"column":3}},"loc":{"start":{"line":276,"column":2},"end":{"line":278,"column":3}},"line":276},"12":{"name":"getDeploymentState","decl":{"start":{"line":280,"column":2},"end":{"line":288,"column":3}},"loc":{"start":{"line":280,"column":2},"end":{"line":288,"column":3}},"line":280},"13":{"name":"parseFactoryAddressFromAccountInitCode","decl":{"start":{"line":296,"column":2},"end":{"line":303,"column":3}},"loc":{"start":{"line":296,"column":2},"end":{"line":303,"column":3}},"line":296},"14":{"name":"getImplementationAddress","decl":{"start":{"line":305,"column":2},"end":{"line":321,"column":3}},"loc":{"start":{"line":305,"column":2},"end":{"line":321,"column":3}},"line":305},"15":{"name":"_getAccountInitCode","decl":{"start":{"line":323,"column":2},"end":{"line":325,"column":3}},"loc":{"start":{"line":323,"column":2},"end":{"line":325,"column":3}},"line":323},"16":{"name":"create6492Signature","decl":{"start":{"line":327,"column":2},"end":{"line":348,"column":3}},"loc":{"start":{"line":327,"column":2},"end":{"line":348,"column":3}},"line":327}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/NexusSmartAccount.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/NexusSmartAccount.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":8}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":12}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":11}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":20}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":20}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":9}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":12}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":21}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":22}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":21}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":14}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":13}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":14}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":12}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":11}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":21}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":9}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":13}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":8}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":10}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":42}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":21}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":21}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":28}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":65}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":77}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":36}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":43}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":81}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":78}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":8}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":17}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":14}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":18}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":24}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":26}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":25}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":15}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":28}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":83}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":8}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":26}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":31}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":24}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":18}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":12}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":16}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":30}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":30}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":8}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":27}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":22}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":38}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":8}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":9}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":26}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":24}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":27}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":15}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":19}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":8}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":28}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":26}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":17}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":29}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":8}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":15}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":12}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":17}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":14}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":21}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":18}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":29}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":13}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":17}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":32}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":15}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":21}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":29}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":26}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":42}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":15}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":28}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":17}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":14}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":36}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":19}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":25}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":79}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":65}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":23}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":25}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":24}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":20}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":0}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":50}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":20}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":31}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":3}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":0}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":52}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":37}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":0}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":112}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":48}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":166}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":47}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":0}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":48}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":45}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":29}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":0}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":22}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":77}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":5}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":37}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":59}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":34}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":11}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":33}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":51}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":21}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":69}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":60}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":6}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":0}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":72}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":47}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":34}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":53}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":80}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":0}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":52}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":27}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":50}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":47}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":38}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":58}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":8}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":65}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":38}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":147}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":8}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":12}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":56}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":5}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":0}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":50}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":0}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":95}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":34}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":66}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":54}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":33}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":66}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":53}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":0}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":47}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":15}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":35}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":9}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":43}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":69}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":76}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":24}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":3}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":0}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":5}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":48}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":4}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":95}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":79}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":4}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":71}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":4}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":132}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":77}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":85}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":4}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":13}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":40}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":84}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":53}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":47}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":4}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":40}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":15}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":26}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":25}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":8}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":4}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":65}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":4}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":97}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":4}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":25}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":4}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":81}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":4}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":5}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":29}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":52}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":33}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":55}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":27}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":39}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":59}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":0}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":38}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":51}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":44}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":0}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":80}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":41}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":47}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":39}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":38}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":7}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":54}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":5}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":0}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":29}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":40}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":19}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":70}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":56}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":44}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":8}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":0}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":33}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":53}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":0}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":30}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":51}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":44}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":26}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":47}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":51}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":0}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":35}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":54}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":35}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":26}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":7}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":62}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":5}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":34}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":80}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":38}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":69}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":5}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":38}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":40}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":5}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":0}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":61}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":33}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":21}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":25}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":30}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":29}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":30}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":14}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":41}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":51}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":5}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":0}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":40}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":3}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":0}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":80}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":49}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":58}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":47}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":67}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":37}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":46}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":46}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":43}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":16}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":5}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":30}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":3}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":44}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":0}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":5}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":77}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":4}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":119}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":84}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":88}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":4}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":65}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":54}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":62}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":4}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":13}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":40}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":65}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":53}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":47}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":4}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":40}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":15}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":26}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":25}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":8}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":4}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":144}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":45}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":63}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":32}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":23}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":8}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":4}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":17}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":22}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":24}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":6}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":4}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":71}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":31}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":40}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":10}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":8}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":4}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":41}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":4}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":5}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":30}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":32}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":39}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":22}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":11}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":19}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":25}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":27}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":18}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":60}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":0}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":51}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":63}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":67}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":51}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":0}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":54}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":14}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":71}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":21}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":7}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":5}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":12}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":22}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":43}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":30}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":19}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":5}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":3}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":0}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":5}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":52}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":4}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":104}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":170}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":4}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":162}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":135}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":4}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":13}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":40}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":65}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":53}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":47}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":4}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":40}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":15}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":26}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":25}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":8}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":4}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":64}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":81}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":120}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":4}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":47}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":9}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":36}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":22}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":64}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":37}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":27}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":9}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":4}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":41}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":4}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":83}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":4}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":53}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":9}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":36}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":23}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":64}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":31}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":27}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":9}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":4}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":5}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":27}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":26}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":37}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":50}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":39}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":0}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":20}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":55}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":21}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":18}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":35}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":35}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":10}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":7}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":0}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":67}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":54}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":28}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":68}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":37}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":28}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":62}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":37}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":37}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":8}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":0}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":41}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":21}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":17}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":44}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":36}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":72}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":31}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":10}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":7}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":5}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":0}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":56}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":29}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":6}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":0}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":17}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":22}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":19}},"466":{"start":{"line":467,"column":0},"end":{"line":467,"column":34}},"467":{"start":{"line":468,"column":0},"end":{"line":468,"column":48}},"468":{"start":{"line":469,"column":0},"end":{"line":469,"column":27}},"469":{"start":{"line":470,"column":0},"end":{"line":470,"column":6}},"470":{"start":{"line":471,"column":0},"end":{"line":471,"column":0}},"471":{"start":{"line":472,"column":0},"end":{"line":472,"column":17}},"472":{"start":{"line":473,"column":0},"end":{"line":473,"column":3}},"473":{"start":{"line":474,"column":0},"end":{"line":474,"column":0}},"474":{"start":{"line":475,"column":0},"end":{"line":475,"column":5}},"475":{"start":{"line":476,"column":0},"end":{"line":476,"column":66}},"476":{"start":{"line":477,"column":0},"end":{"line":477,"column":48}},"477":{"start":{"line":478,"column":0},"end":{"line":478,"column":247}},"478":{"start":{"line":479,"column":0},"end":{"line":479,"column":65}},"479":{"start":{"line":480,"column":0},"end":{"line":480,"column":4}},"480":{"start":{"line":481,"column":0},"end":{"line":481,"column":81}},"481":{"start":{"line":482,"column":0},"end":{"line":482,"column":4}},"482":{"start":{"line":483,"column":0},"end":{"line":483,"column":13}},"483":{"start":{"line":484,"column":0},"end":{"line":484,"column":40}},"484":{"start":{"line":485,"column":0},"end":{"line":485,"column":85}},"485":{"start":{"line":486,"column":0},"end":{"line":486,"column":53}},"486":{"start":{"line":487,"column":0},"end":{"line":487,"column":49}},"487":{"start":{"line":488,"column":0},"end":{"line":488,"column":4}},"488":{"start":{"line":489,"column":0},"end":{"line":489,"column":64}},"489":{"start":{"line":490,"column":0},"end":{"line":490,"column":40}},"490":{"start":{"line":491,"column":0},"end":{"line":491,"column":15}},"491":{"start":{"line":492,"column":0},"end":{"line":492,"column":28}},"492":{"start":{"line":493,"column":0},"end":{"line":493,"column":25}},"493":{"start":{"line":494,"column":0},"end":{"line":494,"column":8}},"494":{"start":{"line":495,"column":0},"end":{"line":495,"column":4}},"495":{"start":{"line":496,"column":0},"end":{"line":496,"column":106}},"496":{"start":{"line":497,"column":0},"end":{"line":497,"column":4}},"497":{"start":{"line":498,"column":0},"end":{"line":498,"column":50}},"498":{"start":{"line":499,"column":0},"end":{"line":499,"column":7}},"499":{"start":{"line":500,"column":0},"end":{"line":500,"column":75}},"500":{"start":{"line":501,"column":0},"end":{"line":501,"column":58}},"501":{"start":{"line":502,"column":0},"end":{"line":502,"column":8}},"502":{"start":{"line":503,"column":0},"end":{"line":503,"column":101}},"503":{"start":{"line":504,"column":0},"end":{"line":504,"column":7}},"504":{"start":{"line":505,"column":0},"end":{"line":505,"column":64}},"505":{"start":{"line":506,"column":0},"end":{"line":506,"column":7}},"506":{"start":{"line":507,"column":0},"end":{"line":507,"column":7}},"507":{"start":{"line":508,"column":0},"end":{"line":508,"column":4}},"508":{"start":{"line":509,"column":0},"end":{"line":509,"column":84}},"509":{"start":{"line":510,"column":0},"end":{"line":510,"column":4}},"510":{"start":{"line":511,"column":0},"end":{"line":511,"column":72}},"511":{"start":{"line":512,"column":0},"end":{"line":512,"column":62}},"512":{"start":{"line":513,"column":0},"end":{"line":513,"column":8}},"513":{"start":{"line":514,"column":0},"end":{"line":514,"column":4}},"514":{"start":{"line":515,"column":0},"end":{"line":515,"column":38}},"515":{"start":{"line":516,"column":0},"end":{"line":516,"column":5}},"516":{"start":{"line":517,"column":0},"end":{"line":517,"column":24}},"517":{"start":{"line":518,"column":0},"end":{"line":518,"column":52}},"518":{"start":{"line":519,"column":0},"end":{"line":519,"column":34}},"519":{"start":{"line":520,"column":0},"end":{"line":520,"column":39}},"520":{"start":{"line":521,"column":0},"end":{"line":521,"column":30}},"521":{"start":{"line":522,"column":0},"end":{"line":522,"column":75}},"522":{"start":{"line":523,"column":0},"end":{"line":523,"column":0}},"523":{"start":{"line":524,"column":0},"end":{"line":524,"column":8}},"524":{"start":{"line":525,"column":0},"end":{"line":525,"column":26}},"525":{"start":{"line":526,"column":0},"end":{"line":526,"column":61}},"526":{"start":{"line":527,"column":0},"end":{"line":527,"column":7}},"527":{"start":{"line":528,"column":0},"end":{"line":528,"column":50}},"528":{"start":{"line":529,"column":0},"end":{"line":529,"column":5}},"529":{"start":{"line":530,"column":0},"end":{"line":530,"column":0}},"530":{"start":{"line":531,"column":0},"end":{"line":531,"column":59}},"531":{"start":{"line":532,"column":0},"end":{"line":532,"column":23}},"532":{"start":{"line":533,"column":0},"end":{"line":533,"column":33}},"533":{"start":{"line":534,"column":0},"end":{"line":534,"column":68}},"534":{"start":{"line":535,"column":0},"end":{"line":535,"column":13}},"535":{"start":{"line":536,"column":0},"end":{"line":536,"column":0}},"536":{"start":{"line":537,"column":0},"end":{"line":537,"column":68}},"537":{"start":{"line":538,"column":0},"end":{"line":538,"column":78}},"538":{"start":{"line":539,"column":0},"end":{"line":539,"column":0}},"539":{"start":{"line":540,"column":0},"end":{"line":540,"column":93}},"540":{"start":{"line":541,"column":0},"end":{"line":541,"column":33}},"541":{"start":{"line":542,"column":0},"end":{"line":542,"column":46}},"542":{"start":{"line":543,"column":0},"end":{"line":543,"column":51}},"543":{"start":{"line":544,"column":0},"end":{"line":544,"column":7}},"544":{"start":{"line":545,"column":0},"end":{"line":545,"column":70}},"545":{"start":{"line":546,"column":0},"end":{"line":546,"column":16}},"546":{"start":{"line":547,"column":0},"end":{"line":547,"column":44}},"547":{"start":{"line":548,"column":0},"end":{"line":548,"column":9}},"548":{"start":{"line":549,"column":0},"end":{"line":549,"column":5}},"549":{"start":{"line":550,"column":0},"end":{"line":550,"column":0}},"550":{"start":{"line":551,"column":0},"end":{"line":551,"column":30}},"551":{"start":{"line":552,"column":0},"end":{"line":552,"column":49}},"552":{"start":{"line":553,"column":0},"end":{"line":553,"column":66}},"553":{"start":{"line":554,"column":0},"end":{"line":554,"column":20}},"554":{"start":{"line":555,"column":0},"end":{"line":555,"column":34}},"555":{"start":{"line":556,"column":0},"end":{"line":556,"column":35}},"556":{"start":{"line":557,"column":0},"end":{"line":557,"column":35}},"557":{"start":{"line":558,"column":0},"end":{"line":558,"column":66}},"558":{"start":{"line":559,"column":0},"end":{"line":559,"column":10}},"559":{"start":{"line":560,"column":0},"end":{"line":560,"column":8}},"560":{"start":{"line":561,"column":0},"end":{"line":561,"column":5}},"561":{"start":{"line":562,"column":0},"end":{"line":562,"column":0}},"562":{"start":{"line":563,"column":0},"end":{"line":563,"column":72}},"563":{"start":{"line":564,"column":0},"end":{"line":564,"column":72}},"564":{"start":{"line":565,"column":0},"end":{"line":565,"column":48}},"565":{"start":{"line":566,"column":0},"end":{"line":566,"column":5}},"566":{"start":{"line":567,"column":0},"end":{"line":567,"column":53}},"567":{"start":{"line":568,"column":0},"end":{"line":568,"column":48}},"568":{"start":{"line":569,"column":0},"end":{"line":569,"column":165}},"569":{"start":{"line":570,"column":0},"end":{"line":570,"column":10}},"570":{"start":{"line":571,"column":0},"end":{"line":571,"column":38}},"571":{"start":{"line":572,"column":0},"end":{"line":572,"column":51}},"572":{"start":{"line":573,"column":0},"end":{"line":573,"column":9}},"573":{"start":{"line":574,"column":0},"end":{"line":574,"column":78}},"574":{"start":{"line":575,"column":0},"end":{"line":575,"column":7}},"575":{"start":{"line":576,"column":0},"end":{"line":576,"column":0}},"576":{"start":{"line":577,"column":0},"end":{"line":577,"column":62}},"577":{"start":{"line":578,"column":0},"end":{"line":578,"column":41}},"578":{"start":{"line":579,"column":0},"end":{"line":579,"column":37}},"579":{"start":{"line":580,"column":0},"end":{"line":580,"column":73}},"580":{"start":{"line":581,"column":0},"end":{"line":581,"column":0}},"581":{"start":{"line":582,"column":0},"end":{"line":582,"column":16}},"582":{"start":{"line":583,"column":0},"end":{"line":583,"column":71}},"583":{"start":{"line":584,"column":0},"end":{"line":584,"column":42}},"584":{"start":{"line":585,"column":0},"end":{"line":585,"column":8}},"585":{"start":{"line":586,"column":0},"end":{"line":586,"column":5}},"586":{"start":{"line":587,"column":0},"end":{"line":587,"column":0}},"587":{"start":{"line":588,"column":0},"end":{"line":588,"column":52}},"588":{"start":{"line":589,"column":0},"end":{"line":589,"column":3}},"589":{"start":{"line":590,"column":0},"end":{"line":590,"column":0}},"590":{"start":{"line":591,"column":0},"end":{"line":591,"column":39}},"591":{"start":{"line":592,"column":0},"end":{"line":592,"column":56}},"592":{"start":{"line":593,"column":0},"end":{"line":593,"column":5}},"593":{"start":{"line":594,"column":0},"end":{"line":594,"column":39}},"594":{"start":{"line":595,"column":0},"end":{"line":595,"column":42}},"595":{"start":{"line":596,"column":0},"end":{"line":596,"column":41}},"596":{"start":{"line":597,"column":0},"end":{"line":597,"column":22}},"597":{"start":{"line":598,"column":0},"end":{"line":598,"column":49}},"598":{"start":{"line":599,"column":0},"end":{"line":599,"column":8}},"599":{"start":{"line":600,"column":0},"end":{"line":600,"column":5}},"600":{"start":{"line":601,"column":0},"end":{"line":601,"column":31}},"601":{"start":{"line":602,"column":0},"end":{"line":602,"column":3}},"602":{"start":{"line":603,"column":0},"end":{"line":603,"column":0}},"603":{"start":{"line":604,"column":0},"end":{"line":604,"column":46}},"604":{"start":{"line":605,"column":0},"end":{"line":605,"column":37}},"605":{"start":{"line":606,"column":0},"end":{"line":606,"column":78}},"606":{"start":{"line":607,"column":0},"end":{"line":607,"column":15}},"607":{"start":{"line":608,"column":0},"end":{"line":608,"column":3}},"608":{"start":{"line":609,"column":0},"end":{"line":609,"column":0}},"609":{"start":{"line":610,"column":0},"end":{"line":610,"column":47}},"610":{"start":{"line":611,"column":0},"end":{"line":611,"column":38}},"611":{"start":{"line":612,"column":0},"end":{"line":612,"column":79}},"612":{"start":{"line":613,"column":0},"end":{"line":613,"column":15}},"613":{"start":{"line":614,"column":0},"end":{"line":614,"column":3}},"614":{"start":{"line":615,"column":0},"end":{"line":615,"column":0}},"615":{"start":{"line":616,"column":0},"end":{"line":616,"column":5}},"616":{"start":{"line":617,"column":0},"end":{"line":617,"column":72}},"617":{"start":{"line":618,"column":0},"end":{"line":618,"column":60}},"618":{"start":{"line":619,"column":0},"end":{"line":619,"column":4}},"619":{"start":{"line":620,"column":0},"end":{"line":620,"column":80}},"620":{"start":{"line":621,"column":0},"end":{"line":621,"column":5}},"621":{"start":{"line":622,"column":0},"end":{"line":622,"column":28}},"622":{"start":{"line":623,"column":0},"end":{"line":623,"column":42}},"623":{"start":{"line":624,"column":0},"end":{"line":624,"column":27}},"624":{"start":{"line":625,"column":0},"end":{"line":625,"column":59}},"625":{"start":{"line":626,"column":0},"end":{"line":626,"column":52}},"626":{"start":{"line":627,"column":0},"end":{"line":627,"column":5}},"627":{"start":{"line":628,"column":0},"end":{"line":628,"column":38}},"628":{"start":{"line":629,"column":0},"end":{"line":629,"column":3}},"629":{"start":{"line":630,"column":0},"end":{"line":630,"column":0}},"630":{"start":{"line":631,"column":0},"end":{"line":631,"column":5}},"631":{"start":{"line":632,"column":0},"end":{"line":632,"column":72}},"632":{"start":{"line":633,"column":0},"end":{"line":633,"column":70}},"633":{"start":{"line":634,"column":0},"end":{"line":634,"column":64}},"634":{"start":{"line":635,"column":0},"end":{"line":635,"column":4}},"635":{"start":{"line":636,"column":0},"end":{"line":636,"column":80}},"636":{"start":{"line":637,"column":0},"end":{"line":637,"column":5}},"637":{"start":{"line":638,"column":0},"end":{"line":638,"column":44}},"638":{"start":{"line":639,"column":0},"end":{"line":639,"column":28}},"639":{"start":{"line":640,"column":0},"end":{"line":640,"column":8}},"640":{"start":{"line":641,"column":0},"end":{"line":641,"column":6}},"641":{"start":{"line":642,"column":0},"end":{"line":642,"column":36}},"642":{"start":{"line":643,"column":0},"end":{"line":643,"column":13}},"643":{"start":{"line":644,"column":0},"end":{"line":644,"column":37}},"644":{"start":{"line":645,"column":0},"end":{"line":645,"column":34}},"645":{"start":{"line":646,"column":0},"end":{"line":646,"column":65}},"646":{"start":{"line":647,"column":0},"end":{"line":647,"column":20}},"647":{"start":{"line":648,"column":0},"end":{"line":648,"column":32}},"648":{"start":{"line":649,"column":0},"end":{"line":649,"column":12}},"649":{"start":{"line":650,"column":0},"end":{"line":650,"column":7}},"650":{"start":{"line":651,"column":0},"end":{"line":651,"column":40}},"651":{"start":{"line":652,"column":0},"end":{"line":652,"column":5}},"652":{"start":{"line":653,"column":0},"end":{"line":653,"column":60}},"653":{"start":{"line":654,"column":0},"end":{"line":654,"column":3}},"654":{"start":{"line":655,"column":0},"end":{"line":655,"column":0}},"655":{"start":{"line":656,"column":0},"end":{"line":656,"column":5}},"656":{"start":{"line":657,"column":0},"end":{"line":657,"column":70}},"657":{"start":{"line":658,"column":0},"end":{"line":658,"column":59}},"658":{"start":{"line":659,"column":0},"end":{"line":659,"column":62}},"659":{"start":{"line":660,"column":0},"end":{"line":660,"column":4}},"660":{"start":{"line":661,"column":0},"end":{"line":661,"column":78}},"661":{"start":{"line":662,"column":0},"end":{"line":662,"column":5}},"662":{"start":{"line":663,"column":0},"end":{"line":663,"column":27}},"663":{"start":{"line":664,"column":0},"end":{"line":664,"column":39}},"664":{"start":{"line":665,"column":0},"end":{"line":665,"column":26}},"665":{"start":{"line":666,"column":0},"end":{"line":666,"column":47}},"666":{"start":{"line":667,"column":0},"end":{"line":667,"column":37}},"667":{"start":{"line":668,"column":0},"end":{"line":668,"column":3}},"668":{"start":{"line":669,"column":0},"end":{"line":669,"column":0}},"669":{"start":{"line":670,"column":0},"end":{"line":670,"column":29}},"670":{"start":{"line":671,"column":0},"end":{"line":671,"column":42}},"671":{"start":{"line":672,"column":0},"end":{"line":672,"column":24}},"672":{"start":{"line":673,"column":0},"end":{"line":673,"column":59}},"673":{"start":{"line":674,"column":0},"end":{"line":674,"column":53}},"674":{"start":{"line":675,"column":0},"end":{"line":675,"column":5}},"675":{"start":{"line":676,"column":0},"end":{"line":676,"column":15}},"676":{"start":{"line":677,"column":0},"end":{"line":677,"column":3}},"677":{"start":{"line":678,"column":0},"end":{"line":678,"column":0}},"678":{"start":{"line":679,"column":0},"end":{"line":679,"column":56}},"679":{"start":{"line":680,"column":0},"end":{"line":680,"column":42}},"680":{"start":{"line":681,"column":0},"end":{"line":681,"column":3}},"681":{"start":{"line":682,"column":0},"end":{"line":682,"column":0}},"682":{"start":{"line":683,"column":0},"end":{"line":683,"column":37}},"683":{"start":{"line":684,"column":0},"end":{"line":684,"column":44}},"684":{"start":{"line":685,"column":0},"end":{"line":685,"column":22}},"685":{"start":{"line":686,"column":0},"end":{"line":686,"column":77}},"686":{"start":{"line":687,"column":0},"end":{"line":687,"column":0}},"687":{"start":{"line":688,"column":0},"end":{"line":688,"column":44}},"688":{"start":{"line":689,"column":0},"end":{"line":689,"column":43}},"689":{"start":{"line":690,"column":0},"end":{"line":690,"column":33}},"690":{"start":{"line":691,"column":0},"end":{"line":691,"column":18}},"691":{"start":{"line":692,"column":0},"end":{"line":692,"column":52}},"692":{"start":{"line":693,"column":0},"end":{"line":693,"column":10}},"693":{"start":{"line":694,"column":0},"end":{"line":694,"column":9}},"694":{"start":{"line":695,"column":0},"end":{"line":695,"column":120}},"695":{"start":{"line":696,"column":0},"end":{"line":696,"column":0}},"696":{"start":{"line":697,"column":0},"end":{"line":697,"column":60}},"697":{"start":{"line":698,"column":0},"end":{"line":698,"column":82}},"698":{"start":{"line":699,"column":0},"end":{"line":699,"column":29}},"699":{"start":{"line":700,"column":0},"end":{"line":700,"column":128}},"700":{"start":{"line":701,"column":0},"end":{"line":701,"column":32}},"701":{"start":{"line":702,"column":0},"end":{"line":702,"column":33}},"702":{"start":{"line":703,"column":0},"end":{"line":703,"column":11}},"703":{"start":{"line":704,"column":0},"end":{"line":704,"column":0}},"704":{"start":{"line":705,"column":0},"end":{"line":705,"column":46}},"705":{"start":{"line":706,"column":0},"end":{"line":706,"column":31}},"706":{"start":{"line":707,"column":0},"end":{"line":707,"column":35}},"707":{"start":{"line":708,"column":0},"end":{"line":708,"column":35}},"708":{"start":{"line":709,"column":0},"end":{"line":709,"column":56}},"709":{"start":{"line":710,"column":0},"end":{"line":710,"column":16}},"710":{"start":{"line":711,"column":0},"end":{"line":711,"column":56}},"711":{"start":{"line":712,"column":0},"end":{"line":712,"column":59}},"712":{"start":{"line":713,"column":0},"end":{"line":713,"column":62}},"713":{"start":{"line":714,"column":0},"end":{"line":714,"column":10}},"714":{"start":{"line":715,"column":0},"end":{"line":715,"column":0}},"715":{"start":{"line":716,"column":0},"end":{"line":716,"column":32}},"716":{"start":{"line":717,"column":0},"end":{"line":717,"column":70}},"717":{"start":{"line":718,"column":0},"end":{"line":718,"column":37}},"718":{"start":{"line":719,"column":0},"end":{"line":719,"column":10}},"719":{"start":{"line":720,"column":0},"end":{"line":720,"column":28}},"720":{"start":{"line":721,"column":0},"end":{"line":721,"column":8}},"721":{"start":{"line":722,"column":0},"end":{"line":722,"column":26}},"722":{"start":{"line":723,"column":0},"end":{"line":723,"column":6}},"723":{"start":{"line":724,"column":0},"end":{"line":724,"column":0}},"724":{"start":{"line":725,"column":0},"end":{"line":725,"column":5}},"725":{"start":{"line":726,"column":0},"end":{"line":726,"column":91}},"726":{"start":{"line":727,"column":0},"end":{"line":727,"column":83}},"727":{"start":{"line":728,"column":0},"end":{"line":728,"column":5}},"728":{"start":{"line":729,"column":0},"end":{"line":729,"column":60}},"729":{"start":{"line":730,"column":0},"end":{"line":730,"column":43}},"730":{"start":{"line":731,"column":0},"end":{"line":731,"column":0}},"731":{"start":{"line":732,"column":0},"end":{"line":732,"column":51}},"732":{"start":{"line":733,"column":0},"end":{"line":733,"column":0}},"733":{"start":{"line":734,"column":0},"end":{"line":734,"column":60}},"734":{"start":{"line":735,"column":0},"end":{"line":735,"column":56}},"735":{"start":{"line":736,"column":0},"end":{"line":736,"column":3}},"736":{"start":{"line":737,"column":0},"end":{"line":737,"column":0}},"737":{"start":{"line":738,"column":0},"end":{"line":738,"column":5}},"738":{"start":{"line":739,"column":0},"end":{"line":739,"column":4}},"739":{"start":{"line":740,"column":0},"end":{"line":740,"column":48}},"740":{"start":{"line":741,"column":0},"end":{"line":741,"column":53}},"741":{"start":{"line":742,"column":0},"end":{"line":742,"column":59}},"742":{"start":{"line":743,"column":0},"end":{"line":743,"column":47}},"743":{"start":{"line":744,"column":0},"end":{"line":744,"column":5}},"744":{"start":{"line":745,"column":0},"end":{"line":745,"column":63}},"745":{"start":{"line":746,"column":0},"end":{"line":746,"column":31}},"746":{"start":{"line":747,"column":0},"end":{"line":747,"column":43}},"747":{"start":{"line":748,"column":0},"end":{"line":748,"column":38}},"748":{"start":{"line":749,"column":0},"end":{"line":749,"column":7}},"749":{"start":{"line":750,"column":0},"end":{"line":750,"column":30}},"750":{"start":{"line":751,"column":0},"end":{"line":751,"column":40}},"751":{"start":{"line":752,"column":0},"end":{"line":752,"column":50}},"752":{"start":{"line":753,"column":0},"end":{"line":753,"column":7}},"753":{"start":{"line":754,"column":0},"end":{"line":754,"column":5}},"754":{"start":{"line":755,"column":0},"end":{"line":755,"column":31}},"755":{"start":{"line":756,"column":0},"end":{"line":756,"column":21}},"756":{"start":{"line":757,"column":0},"end":{"line":757,"column":83}},"757":{"start":{"line":758,"column":0},"end":{"line":758,"column":9}},"758":{"start":{"line":759,"column":0},"end":{"line":759,"column":30}},"759":{"start":{"line":760,"column":0},"end":{"line":760,"column":37}},"760":{"start":{"line":761,"column":0},"end":{"line":761,"column":6}},"761":{"start":{"line":762,"column":0},"end":{"line":762,"column":3}},"762":{"start":{"line":763,"column":0},"end":{"line":763,"column":0}},"763":{"start":{"line":764,"column":0},"end":{"line":764,"column":5}},"764":{"start":{"line":765,"column":0},"end":{"line":765,"column":4}},"765":{"start":{"line":766,"column":0},"end":{"line":766,"column":59}},"766":{"start":{"line":767,"column":0},"end":{"line":767,"column":95}},"767":{"start":{"line":768,"column":0},"end":{"line":768,"column":73}},"768":{"start":{"line":769,"column":0},"end":{"line":769,"column":52}},"769":{"start":{"line":770,"column":0},"end":{"line":770,"column":5}},"770":{"start":{"line":771,"column":0},"end":{"line":771,"column":71}},"771":{"start":{"line":772,"column":0},"end":{"line":772,"column":100}},"772":{"start":{"line":773,"column":0},"end":{"line":773,"column":30}},"773":{"start":{"line":774,"column":0},"end":{"line":774,"column":39}},"774":{"start":{"line":775,"column":0},"end":{"line":775,"column":69}},"775":{"start":{"line":776,"column":0},"end":{"line":776,"column":36}},"776":{"start":{"line":777,"column":0},"end":{"line":777,"column":18}},"777":{"start":{"line":778,"column":0},"end":{"line":778,"column":29}},"778":{"start":{"line":779,"column":0},"end":{"line":779,"column":43}},"779":{"start":{"line":780,"column":0},"end":{"line":780,"column":37}},"780":{"start":{"line":781,"column":0},"end":{"line":781,"column":8}},"781":{"start":{"line":782,"column":0},"end":{"line":782,"column":5}},"782":{"start":{"line":783,"column":0},"end":{"line":783,"column":75}},"783":{"start":{"line":784,"column":0},"end":{"line":784,"column":19}},"784":{"start":{"line":785,"column":0},"end":{"line":785,"column":13}},"785":{"start":{"line":786,"column":0},"end":{"line":786,"column":12}},"786":{"start":{"line":787,"column":0},"end":{"line":787,"column":0}},"787":{"start":{"line":788,"column":0},"end":{"line":788,"column":31}},"788":{"start":{"line":789,"column":0},"end":{"line":789,"column":21}},"789":{"start":{"line":790,"column":0},"end":{"line":790,"column":83}},"790":{"start":{"line":791,"column":0},"end":{"line":791,"column":9}},"791":{"start":{"line":792,"column":0},"end":{"line":792,"column":30}},"792":{"start":{"line":793,"column":0},"end":{"line":793,"column":41}},"793":{"start":{"line":794,"column":0},"end":{"line":794,"column":6}},"794":{"start":{"line":795,"column":0},"end":{"line":795,"column":3}},"795":{"start":{"line":796,"column":0},"end":{"line":796,"column":0}},"796":{"start":{"line":797,"column":0},"end":{"line":797,"column":63}},"797":{"start":{"line":798,"column":0},"end":{"line":798,"column":44}},"798":{"start":{"line":799,"column":0},"end":{"line":799,"column":83}},"799":{"start":{"line":800,"column":0},"end":{"line":800,"column":42}},"800":{"start":{"line":801,"column":0},"end":{"line":801,"column":65}},"801":{"start":{"line":802,"column":0},"end":{"line":802,"column":3}},"802":{"start":{"line":803,"column":0},"end":{"line":803,"column":0}},"803":{"start":{"line":804,"column":0},"end":{"line":804,"column":22}},"804":{"start":{"line":805,"column":0},"end":{"line":805,"column":28}},"805":{"start":{"line":806,"column":0},"end":{"line":806,"column":79}},"806":{"start":{"line":807,"column":0},"end":{"line":807,"column":3}},"807":{"start":{"line":808,"column":0},"end":{"line":808,"column":0}},"808":{"start":{"line":809,"column":0},"end":{"line":809,"column":78}},"809":{"start":{"line":810,"column":0},"end":{"line":810,"column":35}},"810":{"start":{"line":811,"column":0},"end":{"line":811,"column":15}},"811":{"start":{"line":812,"column":0},"end":{"line":812,"column":3}},"812":{"start":{"line":813,"column":0},"end":{"line":813,"column":0}},"813":{"start":{"line":814,"column":0},"end":{"line":814,"column":17}},"814":{"start":{"line":815,"column":0},"end":{"line":815,"column":44}},"815":{"start":{"line":816,"column":0},"end":{"line":816,"column":41}},"816":{"start":{"line":817,"column":0},"end":{"line":817,"column":14}},"817":{"start":{"line":818,"column":0},"end":{"line":818,"column":37}},"818":{"start":{"line":819,"column":0},"end":{"line":819,"column":44}},"819":{"start":{"line":820,"column":0},"end":{"line":820,"column":48}},"820":{"start":{"line":821,"column":0},"end":{"line":821,"column":71}},"821":{"start":{"line":822,"column":0},"end":{"line":822,"column":10}},"822":{"start":{"line":823,"column":0},"end":{"line":823,"column":8}},"823":{"start":{"line":824,"column":0},"end":{"line":824,"column":15}},"824":{"start":{"line":825,"column":0},"end":{"line":825,"column":3}},"825":{"start":{"line":826,"column":0},"end":{"line":826,"column":0}},"826":{"start":{"line":827,"column":0},"end":{"line":827,"column":19}},"827":{"start":{"line":828,"column":0},"end":{"line":828,"column":40}},"828":{"start":{"line":829,"column":0},"end":{"line":829,"column":35}},"829":{"start":{"line":830,"column":0},"end":{"line":830,"column":42}},"830":{"start":{"line":831,"column":0},"end":{"line":831,"column":63}},"831":{"start":{"line":832,"column":0},"end":{"line":832,"column":51}},"832":{"start":{"line":833,"column":0},"end":{"line":833,"column":18}},"833":{"start":{"line":834,"column":0},"end":{"line":834,"column":17}},"834":{"start":{"line":835,"column":0},"end":{"line":835,"column":24}},"835":{"start":{"line":836,"column":0},"end":{"line":836,"column":21}},"836":{"start":{"line":837,"column":0},"end":{"line":837,"column":24}},"837":{"start":{"line":838,"column":0},"end":{"line":838,"column":32}},"838":{"start":{"line":839,"column":0},"end":{"line":839,"column":8}},"839":{"start":{"line":840,"column":0},"end":{"line":840,"column":50}},"840":{"start":{"line":841,"column":0},"end":{"line":841,"column":55}},"841":{"start":{"line":842,"column":0},"end":{"line":842,"column":0}},"842":{"start":{"line":843,"column":0},"end":{"line":843,"column":75}},"843":{"start":{"line":844,"column":0},"end":{"line":844,"column":16}},"844":{"start":{"line":845,"column":0},"end":{"line":845,"column":13}},"845":{"start":{"line":846,"column":0},"end":{"line":846,"column":0}},"846":{"start":{"line":847,"column":0},"end":{"line":847,"column":35}},"847":{"start":{"line":848,"column":0},"end":{"line":848,"column":40}},"848":{"start":{"line":849,"column":0},"end":{"line":849,"column":3}},"849":{"start":{"line":850,"column":0},"end":{"line":850,"column":0}},"850":{"start":{"line":851,"column":0},"end":{"line":851,"column":32}},"851":{"start":{"line":852,"column":0},"end":{"line":852,"column":25}},"852":{"start":{"line":853,"column":0},"end":{"line":853,"column":23}},"853":{"start":{"line":854,"column":0},"end":{"line":854,"column":10}},"854":{"start":{"line":855,"column":0},"end":{"line":855,"column":30}},"855":{"start":{"line":856,"column":0},"end":{"line":856,"column":72}},"856":{"start":{"line":857,"column":0},"end":{"line":857,"column":24}},"857":{"start":{"line":858,"column":0},"end":{"line":858,"column":27}},"858":{"start":{"line":859,"column":0},"end":{"line":859,"column":43}},"859":{"start":{"line":860,"column":0},"end":{"line":860,"column":5}},"860":{"start":{"line":861,"column":0},"end":{"line":861,"column":3}},"861":{"start":{"line":862,"column":0},"end":{"line":862,"column":0}},"862":{"start":{"line":863,"column":0},"end":{"line":863,"column":44}},"863":{"start":{"line":864,"column":0},"end":{"line":864,"column":41}},"864":{"start":{"line":865,"column":0},"end":{"line":865,"column":39}},"865":{"start":{"line":866,"column":0},"end":{"line":866,"column":39}},"866":{"start":{"line":867,"column":0},"end":{"line":867,"column":26}},"867":{"start":{"line":868,"column":0},"end":{"line":868,"column":63}},"868":{"start":{"line":869,"column":0},"end":{"line":869,"column":53}},"869":{"start":{"line":870,"column":0},"end":{"line":870,"column":41}},"870":{"start":{"line":871,"column":0},"end":{"line":871,"column":42}},"871":{"start":{"line":872,"column":0},"end":{"line":872,"column":36}},"872":{"start":{"line":873,"column":0},"end":{"line":873,"column":12}},"873":{"start":{"line":874,"column":0},"end":{"line":874,"column":58}},"874":{"start":{"line":875,"column":0},"end":{"line":875,"column":25}},"875":{"start":{"line":876,"column":0},"end":{"line":876,"column":15}},"876":{"start":{"line":877,"column":0},"end":{"line":877,"column":6}},"877":{"start":{"line":878,"column":0},"end":{"line":878,"column":3}},"878":{"start":{"line":879,"column":0},"end":{"line":879,"column":0}},"879":{"start":{"line":880,"column":0},"end":{"line":880,"column":5}},"880":{"start":{"line":881,"column":0},"end":{"line":881,"column":4}},"881":{"start":{"line":882,"column":0},"end":{"line":882,"column":83}},"882":{"start":{"line":883,"column":0},"end":{"line":883,"column":4}},"883":{"start":{"line":884,"column":0},"end":{"line":884,"column":128}},"884":{"start":{"line":885,"column":0},"end":{"line":885,"column":54}},"885":{"start":{"line":886,"column":0},"end":{"line":886,"column":46}},"886":{"start":{"line":887,"column":0},"end":{"line":887,"column":4}},"887":{"start":{"line":888,"column":0},"end":{"line":888,"column":13}},"888":{"start":{"line":889,"column":0},"end":{"line":889,"column":40}},"889":{"start":{"line":890,"column":0},"end":{"line":890,"column":65}},"890":{"start":{"line":891,"column":0},"end":{"line":891,"column":53}},"891":{"start":{"line":892,"column":0},"end":{"line":892,"column":47}},"892":{"start":{"line":893,"column":0},"end":{"line":893,"column":4}},"893":{"start":{"line":894,"column":0},"end":{"line":894,"column":40}},"894":{"start":{"line":895,"column":0},"end":{"line":895,"column":15}},"895":{"start":{"line":896,"column":0},"end":{"line":896,"column":26}},"896":{"start":{"line":897,"column":0},"end":{"line":897,"column":25}},"897":{"start":{"line":898,"column":0},"end":{"line":898,"column":8}},"898":{"start":{"line":899,"column":0},"end":{"line":899,"column":4}},"899":{"start":{"line":900,"column":0},"end":{"line":900,"column":120}},"900":{"start":{"line":901,"column":0},"end":{"line":901,"column":45}},"901":{"start":{"line":902,"column":0},"end":{"line":902,"column":63}},"902":{"start":{"line":903,"column":0},"end":{"line":903,"column":32}},"903":{"start":{"line":904,"column":0},"end":{"line":904,"column":23}},"904":{"start":{"line":905,"column":0},"end":{"line":905,"column":8}},"905":{"start":{"line":906,"column":0},"end":{"line":906,"column":4}},"906":{"start":{"line":907,"column":0},"end":{"line":907,"column":26}},"907":{"start":{"line":908,"column":0},"end":{"line":908,"column":22}},"908":{"start":{"line":909,"column":0},"end":{"line":909,"column":24}},"909":{"start":{"line":910,"column":0},"end":{"line":910,"column":6}},"910":{"start":{"line":911,"column":0},"end":{"line":911,"column":4}},"911":{"start":{"line":912,"column":0},"end":{"line":912,"column":158}},"912":{"start":{"line":913,"column":0},"end":{"line":913,"column":4}},"913":{"start":{"line":914,"column":0},"end":{"line":914,"column":66}},"914":{"start":{"line":915,"column":0},"end":{"line":915,"column":4}},"915":{"start":{"line":916,"column":0},"end":{"line":916,"column":71}},"916":{"start":{"line":917,"column":0},"end":{"line":917,"column":31}},"917":{"start":{"line":918,"column":0},"end":{"line":918,"column":36}},"918":{"start":{"line":919,"column":0},"end":{"line":919,"column":40}},"919":{"start":{"line":920,"column":0},"end":{"line":920,"column":59}},"920":{"start":{"line":921,"column":0},"end":{"line":921,"column":10}},"921":{"start":{"line":922,"column":0},"end":{"line":922,"column":8}},"922":{"start":{"line":923,"column":0},"end":{"line":923,"column":4}},"923":{"start":{"line":924,"column":0},"end":{"line":924,"column":47}},"924":{"start":{"line":925,"column":0},"end":{"line":925,"column":4}},"925":{"start":{"line":926,"column":0},"end":{"line":926,"column":5}},"926":{"start":{"line":927,"column":0},"end":{"line":927,"column":28}},"927":{"start":{"line":928,"column":0},"end":{"line":928,"column":55}},"928":{"start":{"line":929,"column":0},"end":{"line":929,"column":38}},"929":{"start":{"line":930,"column":0},"end":{"line":930,"column":39}},"930":{"start":{"line":931,"column":0},"end":{"line":931,"column":52}},"931":{"start":{"line":932,"column":0},"end":{"line":932,"column":29}},"932":{"start":{"line":933,"column":0},"end":{"line":933,"column":31}},"933":{"start":{"line":934,"column":0},"end":{"line":934,"column":62}},"934":{"start":{"line":935,"column":0},"end":{"line":935,"column":45}},"935":{"start":{"line":936,"column":0},"end":{"line":936,"column":62}},"936":{"start":{"line":937,"column":0},"end":{"line":937,"column":44}},"937":{"start":{"line":938,"column":0},"end":{"line":938,"column":13}},"938":{"start":{"line":939,"column":0},"end":{"line":939,"column":41}},"939":{"start":{"line":940,"column":0},"end":{"line":940,"column":5}},"940":{"start":{"line":941,"column":0},"end":{"line":941,"column":3}},"941":{"start":{"line":942,"column":0},"end":{"line":942,"column":0}},"942":{"start":{"line":943,"column":0},"end":{"line":943,"column":5}},"943":{"start":{"line":944,"column":0},"end":{"line":944,"column":4}},"944":{"start":{"line":945,"column":0},"end":{"line":945,"column":131}},"945":{"start":{"line":946,"column":0},"end":{"line":946,"column":45}},"946":{"start":{"line":947,"column":0},"end":{"line":947,"column":4}},"947":{"start":{"line":948,"column":0},"end":{"line":948,"column":13}},"948":{"start":{"line":949,"column":0},"end":{"line":949,"column":40}},"949":{"start":{"line":950,"column":0},"end":{"line":950,"column":65}},"950":{"start":{"line":951,"column":0},"end":{"line":951,"column":53}},"951":{"start":{"line":952,"column":0},"end":{"line":952,"column":47}},"952":{"start":{"line":953,"column":0},"end":{"line":953,"column":4}},"953":{"start":{"line":954,"column":0},"end":{"line":954,"column":40}},"954":{"start":{"line":955,"column":0},"end":{"line":955,"column":15}},"955":{"start":{"line":956,"column":0},"end":{"line":956,"column":26}},"956":{"start":{"line":957,"column":0},"end":{"line":957,"column":25}},"957":{"start":{"line":958,"column":0},"end":{"line":958,"column":8}},"958":{"start":{"line":959,"column":0},"end":{"line":959,"column":4}},"959":{"start":{"line":960,"column":0},"end":{"line":960,"column":145}},"960":{"start":{"line":961,"column":0},"end":{"line":961,"column":60}},"961":{"start":{"line":962,"column":0},"end":{"line":962,"column":4}},"962":{"start":{"line":963,"column":0},"end":{"line":963,"column":9}},"963":{"start":{"line":964,"column":0},"end":{"line":964,"column":11}},"964":{"start":{"line":965,"column":0},"end":{"line":965,"column":27}},"965":{"start":{"line":966,"column":0},"end":{"line":966,"column":71}},"966":{"start":{"line":967,"column":0},"end":{"line":967,"column":23}},"967":{"start":{"line":968,"column":0},"end":{"line":968,"column":99}},"968":{"start":{"line":969,"column":0},"end":{"line":969,"column":35}},"969":{"start":{"line":970,"column":0},"end":{"line":970,"column":11}},"970":{"start":{"line":971,"column":0},"end":{"line":971,"column":9}},"971":{"start":{"line":972,"column":0},"end":{"line":972,"column":4}},"972":{"start":{"line":973,"column":0},"end":{"line":973,"column":5}},"973":{"start":{"line":974,"column":0},"end":{"line":974,"column":64}},"974":{"start":{"line":975,"column":0},"end":{"line":975,"column":54}},"975":{"start":{"line":976,"column":0},"end":{"line":976,"column":7}},"976":{"start":{"line":977,"column":0},"end":{"line":977,"column":19}},"977":{"start":{"line":978,"column":0},"end":{"line":978,"column":25}},"978":{"start":{"line":979,"column":0},"end":{"line":979,"column":35}},"979":{"start":{"line":980,"column":0},"end":{"line":980,"column":8}},"980":{"start":{"line":981,"column":0},"end":{"line":981,"column":7}},"981":{"start":{"line":982,"column":0},"end":{"line":982,"column":59}},"982":{"start":{"line":983,"column":0},"end":{"line":983,"column":7}},"983":{"start":{"line":984,"column":0},"end":{"line":984,"column":5}},"984":{"start":{"line":985,"column":0},"end":{"line":985,"column":0}},"985":{"start":{"line":986,"column":0},"end":{"line":986,"column":29}},"986":{"start":{"line":987,"column":0},"end":{"line":987,"column":65}},"987":{"start":{"line":988,"column":0},"end":{"line":988,"column":55}},"988":{"start":{"line":989,"column":0},"end":{"line":989,"column":35}},"989":{"start":{"line":990,"column":0},"end":{"line":990,"column":10}},"990":{"start":{"line":991,"column":0},"end":{"line":991,"column":16}},"991":{"start":{"line":992,"column":0},"end":{"line":992,"column":31}},"992":{"start":{"line":993,"column":0},"end":{"line":993,"column":43}},"993":{"start":{"line":994,"column":0},"end":{"line":994,"column":33}},"994":{"start":{"line":995,"column":0},"end":{"line":995,"column":33}},"995":{"start":{"line":996,"column":0},"end":{"line":996,"column":53}},"996":{"start":{"line":997,"column":0},"end":{"line":997,"column":31}},"997":{"start":{"line":998,"column":0},"end":{"line":998,"column":9}},"998":{"start":{"line":999,"column":0},"end":{"line":999,"column":8}},"999":{"start":{"line":1000,"column":0},"end":{"line":1000,"column":5}},"1000":{"start":{"line":1001,"column":0},"end":{"line":1001,"column":3}},"1001":{"start":{"line":1002,"column":0},"end":{"line":1002,"column":0}},"1002":{"start":{"line":1003,"column":0},"end":{"line":1003,"column":5}},"1003":{"start":{"line":1004,"column":0},"end":{"line":1004,"column":4}},"1004":{"start":{"line":1005,"column":0},"end":{"line":1005,"column":18}},"1005":{"start":{"line":1006,"column":0},"end":{"line":1006,"column":18}},"1006":{"start":{"line":1007,"column":0},"end":{"line":1007,"column":120}},"1007":{"start":{"line":1008,"column":0},"end":{"line":1008,"column":27}},"1008":{"start":{"line":1009,"column":0},"end":{"line":1009,"column":27}},"1009":{"start":{"line":1010,"column":0},"end":{"line":1010,"column":4}},"1010":{"start":{"line":1011,"column":0},"end":{"line":1011,"column":86}},"1011":{"start":{"line":1012,"column":0},"end":{"line":1012,"column":4}},"1012":{"start":{"line":1013,"column":0},"end":{"line":1013,"column":85}},"1013":{"start":{"line":1014,"column":0},"end":{"line":1014,"column":44}},"1014":{"start":{"line":1015,"column":0},"end":{"line":1015,"column":81}},"1015":{"start":{"line":1016,"column":0},"end":{"line":1016,"column":4}},"1016":{"start":{"line":1017,"column":0},"end":{"line":1017,"column":13}},"1017":{"start":{"line":1018,"column":0},"end":{"line":1018,"column":40}},"1018":{"start":{"line":1019,"column":0},"end":{"line":1019,"column":65}},"1019":{"start":{"line":1020,"column":0},"end":{"line":1020,"column":53}},"1020":{"start":{"line":1021,"column":0},"end":{"line":1021,"column":47}},"1021":{"start":{"line":1022,"column":0},"end":{"line":1022,"column":4}},"1022":{"start":{"line":1023,"column":0},"end":{"line":1023,"column":40}},"1023":{"start":{"line":1024,"column":0},"end":{"line":1024,"column":15}},"1024":{"start":{"line":1025,"column":0},"end":{"line":1025,"column":26}},"1025":{"start":{"line":1026,"column":0},"end":{"line":1026,"column":25}},"1026":{"start":{"line":1027,"column":0},"end":{"line":1027,"column":8}},"1027":{"start":{"line":1028,"column":0},"end":{"line":1028,"column":4}},"1028":{"start":{"line":1029,"column":0},"end":{"line":1029,"column":120}},"1029":{"start":{"line":1030,"column":0},"end":{"line":1030,"column":45}},"1030":{"start":{"line":1031,"column":0},"end":{"line":1031,"column":63}},"1031":{"start":{"line":1032,"column":0},"end":{"line":1032,"column":32}},"1032":{"start":{"line":1033,"column":0},"end":{"line":1033,"column":23}},"1033":{"start":{"line":1034,"column":0},"end":{"line":1034,"column":8}},"1034":{"start":{"line":1035,"column":0},"end":{"line":1035,"column":4}},"1035":{"start":{"line":1036,"column":0},"end":{"line":1036,"column":26}},"1036":{"start":{"line":1037,"column":0},"end":{"line":1037,"column":22}},"1037":{"start":{"line":1038,"column":0},"end":{"line":1038,"column":24}},"1038":{"start":{"line":1039,"column":0},"end":{"line":1039,"column":6}},"1039":{"start":{"line":1040,"column":0},"end":{"line":1040,"column":4}},"1040":{"start":{"line":1041,"column":0},"end":{"line":1041,"column":66}},"1041":{"start":{"line":1042,"column":0},"end":{"line":1042,"column":4}},"1042":{"start":{"line":1043,"column":0},"end":{"line":1043,"column":60}},"1043":{"start":{"line":1044,"column":0},"end":{"line":1044,"column":47}},"1044":{"start":{"line":1045,"column":0},"end":{"line":1045,"column":4}},"1045":{"start":{"line":1046,"column":0},"end":{"line":1046,"column":5}},"1046":{"start":{"line":1047,"column":0},"end":{"line":1047,"column":19}},"1047":{"start":{"line":1048,"column":0},"end":{"line":1048,"column":40}},"1048":{"start":{"line":1049,"column":0},"end":{"line":1049,"column":30}},"1049":{"start":{"line":1050,"column":0},"end":{"line":1050,"column":60}},"1050":{"start":{"line":1051,"column":0},"end":{"line":1051,"column":27}},"1051":{"start":{"line":1052,"column":0},"end":{"line":1052,"column":55}},"1052":{"start":{"line":1053,"column":0},"end":{"line":1053,"column":0}},"1053":{"start":{"line":1054,"column":0},"end":{"line":1054,"column":70}},"1054":{"start":{"line":1055,"column":0},"end":{"line":1055,"column":0}},"1055":{"start":{"line":1056,"column":0},"end":{"line":1056,"column":26}},"1056":{"start":{"line":1057,"column":0},"end":{"line":1057,"column":3}},"1057":{"start":{"line":1058,"column":0},"end":{"line":1058,"column":0}},"1058":{"start":{"line":1059,"column":0},"end":{"line":1059,"column":5}},"1059":{"start":{"line":1060,"column":0},"end":{"line":1060,"column":4}},"1060":{"start":{"line":1061,"column":0},"end":{"line":1061,"column":54}},"1061":{"start":{"line":1062,"column":0},"end":{"line":1062,"column":106}},"1062":{"start":{"line":1063,"column":0},"end":{"line":1063,"column":97}},"1063":{"start":{"line":1064,"column":0},"end":{"line":1064,"column":13}},"1064":{"start":{"line":1065,"column":0},"end":{"line":1065,"column":5}},"1065":{"start":{"line":1066,"column":0},"end":{"line":1066,"column":80}},"1066":{"start":{"line":1067,"column":0},"end":{"line":1067,"column":63}},"1067":{"start":{"line":1068,"column":0},"end":{"line":1068,"column":51}},"1068":{"start":{"line":1069,"column":0},"end":{"line":1069,"column":18}},"1069":{"start":{"line":1070,"column":0},"end":{"line":1070,"column":17}},"1070":{"start":{"line":1071,"column":0},"end":{"line":1071,"column":32}},"1071":{"start":{"line":1072,"column":0},"end":{"line":1072,"column":30}},"1072":{"start":{"line":1073,"column":0},"end":{"line":1073,"column":24}},"1073":{"start":{"line":1074,"column":0},"end":{"line":1074,"column":32}},"1074":{"start":{"line":1075,"column":0},"end":{"line":1075,"column":21}},"1075":{"start":{"line":1076,"column":0},"end":{"line":1076,"column":8}},"1076":{"start":{"line":1077,"column":0},"end":{"line":1077,"column":50}},"1077":{"start":{"line":1078,"column":0},"end":{"line":1078,"column":65}},"1078":{"start":{"line":1079,"column":0},"end":{"line":1079,"column":48}},"1079":{"start":{"line":1080,"column":0},"end":{"line":1080,"column":3}},"1080":{"start":{"line":1081,"column":0},"end":{"line":1081,"column":0}},"1081":{"start":{"line":1082,"column":0},"end":{"line":1082,"column":5}},"1082":{"start":{"line":1083,"column":0},"end":{"line":1083,"column":70}},"1083":{"start":{"line":1084,"column":0},"end":{"line":1084,"column":40}},"1084":{"start":{"line":1085,"column":0},"end":{"line":1085,"column":56}},"1085":{"start":{"line":1086,"column":0},"end":{"line":1086,"column":45}},"1086":{"start":{"line":1087,"column":0},"end":{"line":1087,"column":62}},"1087":{"start":{"line":1088,"column":0},"end":{"line":1088,"column":71}},"1088":{"start":{"line":1089,"column":0},"end":{"line":1089,"column":5}},"1089":{"start":{"line":1090,"column":0},"end":{"line":1090,"column":23}},"1090":{"start":{"line":1091,"column":0},"end":{"line":1091,"column":31}},"1091":{"start":{"line":1092,"column":0},"end":{"line":1092,"column":39}},"1092":{"start":{"line":1093,"column":0},"end":{"line":1093,"column":31}},"1093":{"start":{"line":1094,"column":0},"end":{"line":1094,"column":38}},"1094":{"start":{"line":1095,"column":0},"end":{"line":1095,"column":5}},"1095":{"start":{"line":1096,"column":0},"end":{"line":1096,"column":42}},"1096":{"start":{"line":1097,"column":0},"end":{"line":1097,"column":29}},"1097":{"start":{"line":1098,"column":0},"end":{"line":1098,"column":42}},"1098":{"start":{"line":1099,"column":0},"end":{"line":1099,"column":12}},"1099":{"start":{"line":1100,"column":0},"end":{"line":1100,"column":51}},"1100":{"start":{"line":1101,"column":0},"end":{"line":1101,"column":29}},"1101":{"start":{"line":1102,"column":0},"end":{"line":1102,"column":42}},"1102":{"start":{"line":1103,"column":0},"end":{"line":1103,"column":12}},"1103":{"start":{"line":1104,"column":0},"end":{"line":1104,"column":0}},"1104":{"start":{"line":1105,"column":0},"end":{"line":1105,"column":40}},"1105":{"start":{"line":1106,"column":0},"end":{"line":1106,"column":3}},"1106":{"start":{"line":1107,"column":0},"end":{"line":1107,"column":0}},"1107":{"start":{"line":1108,"column":0},"end":{"line":1108,"column":75}},"1108":{"start":{"line":1109,"column":0},"end":{"line":1109,"column":43}},"1109":{"start":{"line":1110,"column":0},"end":{"line":1110,"column":53}},"1110":{"start":{"line":1111,"column":0},"end":{"line":1111,"column":36}},"1111":{"start":{"line":1112,"column":0},"end":{"line":1112,"column":54}},"1112":{"start":{"line":1113,"column":0},"end":{"line":1113,"column":65}},"1113":{"start":{"line":1114,"column":0},"end":{"line":1114,"column":5}},"1114":{"start":{"line":1115,"column":0},"end":{"line":1115,"column":25}},"1115":{"start":{"line":1116,"column":0},"end":{"line":1116,"column":3}},"1116":{"start":{"line":1117,"column":0},"end":{"line":1117,"column":0}},"1117":{"start":{"line":1118,"column":0},"end":{"line":1118,"column":26}},"1118":{"start":{"line":1119,"column":0},"end":{"line":1119,"column":41}},"1119":{"start":{"line":1120,"column":0},"end":{"line":1120,"column":39}},"1120":{"start":{"line":1121,"column":0},"end":{"line":1121,"column":44}},"1121":{"start":{"line":1122,"column":0},"end":{"line":1122,"column":65}},"1122":{"start":{"line":1123,"column":0},"end":{"line":1123,"column":30}},"1123":{"start":{"line":1124,"column":0},"end":{"line":1124,"column":0}},"1124":{"start":{"line":1125,"column":0},"end":{"line":1125,"column":63}},"1125":{"start":{"line":1126,"column":0},"end":{"line":1126,"column":66}},"1126":{"start":{"line":1127,"column":0},"end":{"line":1127,"column":45}},"1127":{"start":{"line":1128,"column":0},"end":{"line":1128,"column":55}},"1128":{"start":{"line":1129,"column":0},"end":{"line":1129,"column":48}},"1129":{"start":{"line":1130,"column":0},"end":{"line":1130,"column":51}},"1130":{"start":{"line":1131,"column":0},"end":{"line":1131,"column":14}},"1131":{"start":{"line":1132,"column":0},"end":{"line":1132,"column":72}},"1132":{"start":{"line":1133,"column":0},"end":{"line":1133,"column":7}},"1133":{"start":{"line":1134,"column":0},"end":{"line":1134,"column":0}},"1134":{"start":{"line":1135,"column":0},"end":{"line":1135,"column":53}},"1135":{"start":{"line":1136,"column":0},"end":{"line":1136,"column":71}},"1136":{"start":{"line":1137,"column":0},"end":{"line":1137,"column":48}},"1137":{"start":{"line":1138,"column":0},"end":{"line":1138,"column":65}},"1138":{"start":{"line":1139,"column":0},"end":{"line":1139,"column":14}},"1139":{"start":{"line":1140,"column":0},"end":{"line":1140,"column":80}},"1140":{"start":{"line":1141,"column":0},"end":{"line":1141,"column":7}},"1141":{"start":{"line":1142,"column":0},"end":{"line":1142,"column":5}},"1142":{"start":{"line":1143,"column":0},"end":{"line":1143,"column":0}},"1143":{"start":{"line":1144,"column":0},"end":{"line":1144,"column":70}},"1144":{"start":{"line":1145,"column":0},"end":{"line":1145,"column":68}},"1145":{"start":{"line":1146,"column":0},"end":{"line":1146,"column":38}},"1146":{"start":{"line":1147,"column":0},"end":{"line":1147,"column":57}},"1147":{"start":{"line":1148,"column":0},"end":{"line":1148,"column":66}},"1148":{"start":{"line":1149,"column":0},"end":{"line":1149,"column":36}},"1149":{"start":{"line":1150,"column":0},"end":{"line":1150,"column":53}},"1150":{"start":{"line":1151,"column":0},"end":{"line":1151,"column":0}},"1151":{"start":{"line":1152,"column":0},"end":{"line":1152,"column":22}},"1152":{"start":{"line":1153,"column":0},"end":{"line":1153,"column":3}},"1153":{"start":{"line":1154,"column":0},"end":{"line":1154,"column":0}},"1154":{"start":{"line":1155,"column":0},"end":{"line":1155,"column":26}},"1155":{"start":{"line":1156,"column":0},"end":{"line":1156,"column":71}},"1156":{"start":{"line":1157,"column":0},"end":{"line":1157,"column":22}},"1157":{"start":{"line":1158,"column":0},"end":{"line":1158,"column":9}},"1158":{"start":{"line":1159,"column":0},"end":{"line":1159,"column":16}},"1159":{"start":{"line":1160,"column":0},"end":{"line":1160,"column":52}},"1160":{"start":{"line":1161,"column":0},"end":{"line":1161,"column":50}},"1161":{"start":{"line":1162,"column":0},"end":{"line":1162,"column":77}},"1162":{"start":{"line":1163,"column":0},"end":{"line":1163,"column":52}},"1163":{"start":{"line":1164,"column":0},"end":{"line":1164,"column":51}},"1164":{"start":{"line":1165,"column":0},"end":{"line":1165,"column":23}},"1165":{"start":{"line":1166,"column":0},"end":{"line":1166,"column":19}},"1166":{"start":{"line":1167,"column":0},"end":{"line":1167,"column":19}},"1167":{"start":{"line":1168,"column":0},"end":{"line":1168,"column":17}},"1168":{"start":{"line":1169,"column":0},"end":{"line":1169,"column":22}},"1169":{"start":{"line":1170,"column":0},"end":{"line":1170,"column":5}},"1170":{"start":{"line":1171,"column":0},"end":{"line":1171,"column":3}},"1171":{"start":{"line":1172,"column":0},"end":{"line":1172,"column":0}},"1172":{"start":{"line":1173,"column":0},"end":{"line":1173,"column":36}},"1173":{"start":{"line":1174,"column":0},"end":{"line":1174,"column":42}},"1174":{"start":{"line":1175,"column":0},"end":{"line":1175,"column":22}},"1175":{"start":{"line":1176,"column":0},"end":{"line":1176,"column":25}},"1176":{"start":{"line":1177,"column":0},"end":{"line":1177,"column":9}},"1177":{"start":{"line":1178,"column":0},"end":{"line":1178,"column":40}},"1178":{"start":{"line":1179,"column":0},"end":{"line":1179,"column":51}},"1179":{"start":{"line":1180,"column":0},"end":{"line":1180,"column":14}},"1180":{"start":{"line":1181,"column":0},"end":{"line":1181,"column":65}},"1181":{"start":{"line":1182,"column":0},"end":{"line":1182,"column":7}},"1182":{"start":{"line":1183,"column":0},"end":{"line":1183,"column":21}},"1183":{"start":{"line":1184,"column":0},"end":{"line":1184,"column":134}},"1184":{"start":{"line":1185,"column":0},"end":{"line":1185,"column":18}},"1185":{"start":{"line":1186,"column":0},"end":{"line":1186,"column":108}},"1186":{"start":{"line":1187,"column":0},"end":{"line":1187,"column":7}},"1187":{"start":{"line":1188,"column":0},"end":{"line":1188,"column":5}},"1188":{"start":{"line":1189,"column":0},"end":{"line":1189,"column":16}},"1189":{"start":{"line":1190,"column":0},"end":{"line":1190,"column":3}},"1190":{"start":{"line":1191,"column":0},"end":{"line":1191,"column":0}},"1191":{"start":{"line":1192,"column":0},"end":{"line":1192,"column":5}},"1192":{"start":{"line":1193,"column":0},"end":{"line":1193,"column":61}},"1193":{"start":{"line":1194,"column":0},"end":{"line":1194,"column":50}},"1194":{"start":{"line":1195,"column":0},"end":{"line":1195,"column":162}},"1195":{"start":{"line":1196,"column":0},"end":{"line":1196,"column":73}},"1196":{"start":{"line":1197,"column":0},"end":{"line":1197,"column":73}},"1197":{"start":{"line":1198,"column":0},"end":{"line":1198,"column":164}},"1198":{"start":{"line":1199,"column":0},"end":{"line":1199,"column":160}},"1199":{"start":{"line":1200,"column":0},"end":{"line":1200,"column":13}},"1200":{"start":{"line":1201,"column":0},"end":{"line":1201,"column":18}},"1201":{"start":{"line":1202,"column":0},"end":{"line":1202,"column":5}},"1202":{"start":{"line":1203,"column":0},"end":{"line":1203,"column":44}},"1203":{"start":{"line":1204,"column":0},"end":{"line":1204,"column":16}},"1204":{"start":{"line":1205,"column":0},"end":{"line":1205,"column":27}},"1205":{"start":{"line":1206,"column":0},"end":{"line":1206,"column":25}},"1206":{"start":{"line":1207,"column":0},"end":{"line":1207,"column":9}},"1207":{"start":{"line":1208,"column":0},"end":{"line":1208,"column":0}},"1208":{"start":{"line":1209,"column":0},"end":{"line":1209,"column":57}},"1209":{"start":{"line":1210,"column":0},"end":{"line":1210,"column":29}},"1210":{"start":{"line":1211,"column":0},"end":{"line":1211,"column":65}},"1211":{"start":{"line":1212,"column":0},"end":{"line":1212,"column":110}},"1212":{"start":{"line":1213,"column":0},"end":{"line":1213,"column":22}},"1213":{"start":{"line":1214,"column":0},"end":{"line":1214,"column":9}},"1214":{"start":{"line":1215,"column":0},"end":{"line":1215,"column":159}},"1215":{"start":{"line":1216,"column":0},"end":{"line":1216,"column":6}},"1216":{"start":{"line":1217,"column":0},"end":{"line":1217,"column":41}},"1217":{"start":{"line":1218,"column":0},"end":{"line":1218,"column":24}},"1218":{"start":{"line":1219,"column":0},"end":{"line":1219,"column":27}},"1219":{"start":{"line":1220,"column":0},"end":{"line":1220,"column":25}},"1220":{"start":{"line":1221,"column":0},"end":{"line":1221,"column":8}},"1221":{"start":{"line":1222,"column":0},"end":{"line":1222,"column":6}},"1222":{"start":{"line":1223,"column":0},"end":{"line":1223,"column":53}},"1223":{"start":{"line":1224,"column":0},"end":{"line":1224,"column":29}},"1224":{"start":{"line":1225,"column":0},"end":{"line":1225,"column":65}},"1225":{"start":{"line":1226,"column":0},"end":{"line":1226,"column":110}},"1226":{"start":{"line":1227,"column":0},"end":{"line":1227,"column":23}},"1227":{"start":{"line":1228,"column":0},"end":{"line":1228,"column":55}},"1228":{"start":{"line":1229,"column":0},"end":{"line":1229,"column":8}},"1229":{"start":{"line":1230,"column":0},"end":{"line":1230,"column":8}},"1230":{"start":{"line":1231,"column":0},"end":{"line":1231,"column":5}},"1231":{"start":{"line":1232,"column":0},"end":{"line":1232,"column":26}},"1232":{"start":{"line":1233,"column":0},"end":{"line":1233,"column":22}},"1233":{"start":{"line":1234,"column":0},"end":{"line":1234,"column":53}},"1234":{"start":{"line":1235,"column":0},"end":{"line":1235,"column":39}},"1235":{"start":{"line":1236,"column":0},"end":{"line":1236,"column":30}},"1236":{"start":{"line":1237,"column":0},"end":{"line":1237,"column":44}},"1237":{"start":{"line":1238,"column":0},"end":{"line":1238,"column":77}},"1238":{"start":{"line":1239,"column":0},"end":{"line":1239,"column":40}},"1239":{"start":{"line":1240,"column":0},"end":{"line":1240,"column":22}},"1240":{"start":{"line":1241,"column":0},"end":{"line":1241,"column":6}},"1241":{"start":{"line":1242,"column":0},"end":{"line":1242,"column":25}},"1242":{"start":{"line":1243,"column":0},"end":{"line":1243,"column":24}},"1243":{"start":{"line":1244,"column":0},"end":{"line":1244,"column":23}},"1244":{"start":{"line":1245,"column":0},"end":{"line":1245,"column":5}},"1245":{"start":{"line":1246,"column":0},"end":{"line":1246,"column":70}},"1246":{"start":{"line":1247,"column":0},"end":{"line":1247,"column":18}},"1247":{"start":{"line":1248,"column":0},"end":{"line":1248,"column":20}},"1248":{"start":{"line":1249,"column":0},"end":{"line":1249,"column":5}},"1249":{"start":{"line":1250,"column":0},"end":{"line":1250,"column":25}},"1250":{"start":{"line":1251,"column":0},"end":{"line":1251,"column":3}},"1251":{"start":{"line":1252,"column":0},"end":{"line":1252,"column":0}},"1252":{"start":{"line":1253,"column":0},"end":{"line":1253,"column":5}},"1253":{"start":{"line":1254,"column":0},"end":{"line":1254,"column":65}},"1254":{"start":{"line":1255,"column":0},"end":{"line":1255,"column":4}},"1255":{"start":{"line":1256,"column":0},"end":{"line":1256,"column":84}},"1256":{"start":{"line":1257,"column":0},"end":{"line":1257,"column":4}},"1257":{"start":{"line":1258,"column":0},"end":{"line":1258,"column":128}},"1258":{"start":{"line":1259,"column":0},"end":{"line":1259,"column":54}},"1259":{"start":{"line":1260,"column":0},"end":{"line":1260,"column":81}},"1260":{"start":{"line":1261,"column":0},"end":{"line":1261,"column":4}},"1261":{"start":{"line":1262,"column":0},"end":{"line":1262,"column":13}},"1262":{"start":{"line":1263,"column":0},"end":{"line":1263,"column":40}},"1263":{"start":{"line":1264,"column":0},"end":{"line":1264,"column":65}},"1264":{"start":{"line":1265,"column":0},"end":{"line":1265,"column":53}},"1265":{"start":{"line":1266,"column":0},"end":{"line":1266,"column":47}},"1266":{"start":{"line":1267,"column":0},"end":{"line":1267,"column":4}},"1267":{"start":{"line":1268,"column":0},"end":{"line":1268,"column":40}},"1268":{"start":{"line":1269,"column":0},"end":{"line":1269,"column":15}},"1269":{"start":{"line":1270,"column":0},"end":{"line":1270,"column":26}},"1270":{"start":{"line":1271,"column":0},"end":{"line":1271,"column":25}},"1271":{"start":{"line":1272,"column":0},"end":{"line":1272,"column":8}},"1272":{"start":{"line":1273,"column":0},"end":{"line":1273,"column":4}},"1273":{"start":{"line":1274,"column":0},"end":{"line":1274,"column":120}},"1274":{"start":{"line":1275,"column":0},"end":{"line":1275,"column":45}},"1275":{"start":{"line":1276,"column":0},"end":{"line":1276,"column":63}},"1276":{"start":{"line":1277,"column":0},"end":{"line":1277,"column":32}},"1277":{"start":{"line":1278,"column":0},"end":{"line":1278,"column":23}},"1278":{"start":{"line":1279,"column":0},"end":{"line":1279,"column":8}},"1279":{"start":{"line":1280,"column":0},"end":{"line":1280,"column":4}},"1280":{"start":{"line":1281,"column":0},"end":{"line":1281,"column":26}},"1281":{"start":{"line":1282,"column":0},"end":{"line":1282,"column":22}},"1282":{"start":{"line":1283,"column":0},"end":{"line":1283,"column":24}},"1283":{"start":{"line":1284,"column":0},"end":{"line":1284,"column":6}},"1284":{"start":{"line":1285,"column":0},"end":{"line":1285,"column":4}},"1285":{"start":{"line":1286,"column":0},"end":{"line":1286,"column":79}},"1286":{"start":{"line":1287,"column":0},"end":{"line":1287,"column":68}},"1287":{"start":{"line":1288,"column":0},"end":{"line":1288,"column":4}},"1288":{"start":{"line":1289,"column":0},"end":{"line":1289,"column":14}},"1289":{"start":{"line":1290,"column":0},"end":{"line":1290,"column":111}},"1290":{"start":{"line":1291,"column":0},"end":{"line":1291,"column":14}},"1291":{"start":{"line":1292,"column":0},"end":{"line":1292,"column":40}},"1292":{"start":{"line":1293,"column":0},"end":{"line":1293,"column":65}},"1293":{"start":{"line":1294,"column":0},"end":{"line":1294,"column":53}},"1294":{"start":{"line":1295,"column":0},"end":{"line":1295,"column":47}},"1295":{"start":{"line":1296,"column":0},"end":{"line":1296,"column":4}},"1296":{"start":{"line":1297,"column":0},"end":{"line":1297,"column":40}},"1297":{"start":{"line":1298,"column":0},"end":{"line":1298,"column":15}},"1298":{"start":{"line":1299,"column":0},"end":{"line":1299,"column":26}},"1299":{"start":{"line":1300,"column":0},"end":{"line":1300,"column":25}},"1300":{"start":{"line":1301,"column":0},"end":{"line":1301,"column":8}},"1301":{"start":{"line":1302,"column":0},"end":{"line":1302,"column":4}},"1302":{"start":{"line":1303,"column":0},"end":{"line":1303,"column":120}},"1303":{"start":{"line":1304,"column":0},"end":{"line":1304,"column":45}},"1304":{"start":{"line":1305,"column":0},"end":{"line":1305,"column":63}},"1305":{"start":{"line":1306,"column":0},"end":{"line":1306,"column":32}},"1306":{"start":{"line":1307,"column":0},"end":{"line":1307,"column":23}},"1307":{"start":{"line":1308,"column":0},"end":{"line":1308,"column":8}},"1308":{"start":{"line":1309,"column":0},"end":{"line":1309,"column":4}},"1309":{"start":{"line":1310,"column":0},"end":{"line":1310,"column":26}},"1310":{"start":{"line":1311,"column":0},"end":{"line":1311,"column":22}},"1311":{"start":{"line":1312,"column":0},"end":{"line":1312,"column":24}},"1312":{"start":{"line":1313,"column":0},"end":{"line":1313,"column":6}},"1313":{"start":{"line":1314,"column":0},"end":{"line":1314,"column":4}},"1314":{"start":{"line":1315,"column":0},"end":{"line":1315,"column":80}},"1315":{"start":{"line":1316,"column":0},"end":{"line":1316,"column":18}},"1316":{"start":{"line":1317,"column":0},"end":{"line":1317,"column":96}},"1317":{"start":{"line":1318,"column":0},"end":{"line":1318,"column":93}},"1318":{"start":{"line":1319,"column":0},"end":{"line":1319,"column":10}},"1319":{"start":{"line":1320,"column":0},"end":{"line":1320,"column":8}},"1320":{"start":{"line":1321,"column":0},"end":{"line":1321,"column":68}},"1321":{"start":{"line":1322,"column":0},"end":{"line":1322,"column":4}},"1322":{"start":{"line":1323,"column":0},"end":{"line":1323,"column":5}},"1323":{"start":{"line":1324,"column":0},"end":{"line":1324,"column":24}},"1324":{"start":{"line":1325,"column":0},"end":{"line":1325,"column":55}},"1325":{"start":{"line":1326,"column":0},"end":{"line":1326,"column":39}},"1326":{"start":{"line":1327,"column":0},"end":{"line":1327,"column":30}},"1327":{"start":{"line":1328,"column":0},"end":{"line":1328,"column":42}},"1328":{"start":{"line":1329,"column":0},"end":{"line":1329,"column":42}},"1329":{"start":{"line":1330,"column":0},"end":{"line":1330,"column":31}},"1330":{"start":{"line":1331,"column":0},"end":{"line":1331,"column":34}},"1331":{"start":{"line":1332,"column":0},"end":{"line":1332,"column":20}},"1332":{"start":{"line":1333,"column":0},"end":{"line":1333,"column":5}},"1333":{"start":{"line":1334,"column":0},"end":{"line":1334,"column":34}},"1334":{"start":{"line":1335,"column":0},"end":{"line":1335,"column":3}},"1335":{"start":{"line":1336,"column":0},"end":{"line":1336,"column":0}},"1336":{"start":{"line":1337,"column":0},"end":{"line":1337,"column":36}},"1337":{"start":{"line":1338,"column":0},"end":{"line":1338,"column":55}},"1338":{"start":{"line":1339,"column":0},"end":{"line":1339,"column":33}},"1339":{"start":{"line":1340,"column":0},"end":{"line":1340,"column":42}},"1340":{"start":{"line":1341,"column":0},"end":{"line":1341,"column":29}},"1341":{"start":{"line":1342,"column":0},"end":{"line":1342,"column":42}},"1342":{"start":{"line":1343,"column":0},"end":{"line":1343,"column":42}},"1343":{"start":{"line":1344,"column":0},"end":{"line":1344,"column":31}},"1344":{"start":{"line":1345,"column":0},"end":{"line":1345,"column":34}},"1345":{"start":{"line":1346,"column":0},"end":{"line":1346,"column":25}},"1346":{"start":{"line":1347,"column":0},"end":{"line":1347,"column":23}},"1347":{"start":{"line":1348,"column":0},"end":{"line":1348,"column":5}},"1348":{"start":{"line":1349,"column":0},"end":{"line":1349,"column":3}},"1349":{"start":{"line":1350,"column":0},"end":{"line":1350,"column":0}},"1350":{"start":{"line":1351,"column":0},"end":{"line":1351,"column":5}},"1351":{"start":{"line":1352,"column":0},"end":{"line":1352,"column":28}},"1352":{"start":{"line":1353,"column":0},"end":{"line":1353,"column":4}},"1353":{"start":{"line":1354,"column":0},"end":{"line":1354,"column":153}},"1354":{"start":{"line":1355,"column":0},"end":{"line":1355,"column":4}},"1355":{"start":{"line":1356,"column":0},"end":{"line":1356,"column":87}},"1356":{"start":{"line":1357,"column":0},"end":{"line":1357,"column":4}},"1357":{"start":{"line":1358,"column":0},"end":{"line":1358,"column":65}},"1358":{"start":{"line":1359,"column":0},"end":{"line":1359,"column":54}},"1359":{"start":{"line":1360,"column":0},"end":{"line":1360,"column":95}},"1360":{"start":{"line":1361,"column":0},"end":{"line":1361,"column":4}},"1361":{"start":{"line":1362,"column":0},"end":{"line":1362,"column":13}},"1362":{"start":{"line":1363,"column":0},"end":{"line":1363,"column":40}},"1363":{"start":{"line":1364,"column":0},"end":{"line":1364,"column":65}},"1364":{"start":{"line":1365,"column":0},"end":{"line":1365,"column":53}},"1365":{"start":{"line":1366,"column":0},"end":{"line":1366,"column":47}},"1366":{"start":{"line":1367,"column":0},"end":{"line":1367,"column":4}},"1367":{"start":{"line":1368,"column":0},"end":{"line":1368,"column":40}},"1368":{"start":{"line":1369,"column":0},"end":{"line":1369,"column":15}},"1369":{"start":{"line":1370,"column":0},"end":{"line":1370,"column":26}},"1370":{"start":{"line":1371,"column":0},"end":{"line":1371,"column":25}},"1371":{"start":{"line":1372,"column":0},"end":{"line":1372,"column":8}},"1372":{"start":{"line":1373,"column":0},"end":{"line":1373,"column":4}},"1373":{"start":{"line":1374,"column":0},"end":{"line":1374,"column":120}},"1374":{"start":{"line":1375,"column":0},"end":{"line":1375,"column":45}},"1375":{"start":{"line":1376,"column":0},"end":{"line":1376,"column":63}},"1376":{"start":{"line":1377,"column":0},"end":{"line":1377,"column":32}},"1377":{"start":{"line":1378,"column":0},"end":{"line":1378,"column":23}},"1378":{"start":{"line":1379,"column":0},"end":{"line":1379,"column":8}},"1379":{"start":{"line":1380,"column":0},"end":{"line":1380,"column":4}},"1380":{"start":{"line":1381,"column":0},"end":{"line":1381,"column":26}},"1381":{"start":{"line":1382,"column":0},"end":{"line":1382,"column":22}},"1382":{"start":{"line":1383,"column":0},"end":{"line":1383,"column":24}},"1383":{"start":{"line":1384,"column":0},"end":{"line":1384,"column":6}},"1384":{"start":{"line":1385,"column":0},"end":{"line":1385,"column":4}},"1385":{"start":{"line":1386,"column":0},"end":{"line":1386,"column":89}},"1386":{"start":{"line":1387,"column":0},"end":{"line":1387,"column":4}},"1387":{"start":{"line":1388,"column":0},"end":{"line":1388,"column":5}},"1388":{"start":{"line":1389,"column":0},"end":{"line":1389,"column":20}},"1389":{"start":{"line":1390,"column":0},"end":{"line":1390,"column":32}},"1390":{"start":{"line":1391,"column":0},"end":{"line":1391,"column":39}},"1391":{"start":{"line":1392,"column":0},"end":{"line":1392,"column":44}},"1392":{"start":{"line":1393,"column":0},"end":{"line":1393,"column":64}},"1393":{"start":{"line":1394,"column":0},"end":{"line":1394,"column":64}},"1394":{"start":{"line":1395,"column":0},"end":{"line":1395,"column":61}},"1395":{"start":{"line":1396,"column":0},"end":{"line":1396,"column":32}},"1396":{"start":{"line":1397,"column":0},"end":{"line":1397,"column":6}},"1397":{"start":{"line":1398,"column":0},"end":{"line":1398,"column":0}},"1398":{"start":{"line":1399,"column":0},"end":{"line":1399,"column":36}},"1399":{"start":{"line":1400,"column":0},"end":{"line":1400,"column":59}},"1400":{"start":{"line":1401,"column":0},"end":{"line":1401,"column":5}},"1401":{"start":{"line":1402,"column":0},"end":{"line":1402,"column":28}},"1402":{"start":{"line":1403,"column":0},"end":{"line":1403,"column":50}},"1403":{"start":{"line":1404,"column":0},"end":{"line":1404,"column":75}},"1404":{"start":{"line":1405,"column":0},"end":{"line":1405,"column":62}},"1405":{"start":{"line":1406,"column":0},"end":{"line":1406,"column":14}},"1406":{"start":{"line":1407,"column":0},"end":{"line":1407,"column":60}},"1407":{"start":{"line":1408,"column":0},"end":{"line":1408,"column":7}},"1408":{"start":{"line":1409,"column":0},"end":{"line":1409,"column":5}},"1409":{"start":{"line":1410,"column":0},"end":{"line":1410,"column":0}},"1410":{"start":{"line":1411,"column":0},"end":{"line":1411,"column":51}},"1411":{"start":{"line":1412,"column":0},"end":{"line":1412,"column":48}},"1412":{"start":{"line":1413,"column":0},"end":{"line":1413,"column":47}},"1413":{"start":{"line":1414,"column":0},"end":{"line":1414,"column":28}},"1414":{"start":{"line":1415,"column":0},"end":{"line":1415,"column":18}},"1415":{"start":{"line":1416,"column":0},"end":{"line":1416,"column":47}},"1416":{"start":{"line":1417,"column":0},"end":{"line":1417,"column":19}},"1417":{"start":{"line":1418,"column":0},"end":{"line":1418,"column":30}},"1418":{"start":{"line":1419,"column":0},"end":{"line":1419,"column":14}},"1419":{"start":{"line":1420,"column":0},"end":{"line":1420,"column":5}},"1420":{"start":{"line":1421,"column":0},"end":{"line":1421,"column":0}},"1421":{"start":{"line":1422,"column":0},"end":{"line":1422,"column":37}},"1422":{"start":{"line":1423,"column":0},"end":{"line":1423,"column":0}},"1423":{"start":{"line":1424,"column":0},"end":{"line":1424,"column":39}},"1424":{"start":{"line":1425,"column":0},"end":{"line":1425,"column":74}},"1425":{"start":{"line":1426,"column":0},"end":{"line":1426,"column":45}},"1426":{"start":{"line":1427,"column":0},"end":{"line":1427,"column":0}},"1427":{"start":{"line":1428,"column":0},"end":{"line":1428,"column":65}},"1428":{"start":{"line":1429,"column":0},"end":{"line":1429,"column":35}},"1429":{"start":{"line":1430,"column":0},"end":{"line":1430,"column":53}},"1430":{"start":{"line":1431,"column":0},"end":{"line":1431,"column":5}},"1431":{"start":{"line":1432,"column":0},"end":{"line":1432,"column":0}},"1432":{"start":{"line":1433,"column":0},"end":{"line":1433,"column":49}},"1433":{"start":{"line":1434,"column":0},"end":{"line":1434,"column":0}},"1434":{"start":{"line":1435,"column":0},"end":{"line":1435,"column":17}},"1435":{"start":{"line":1436,"column":0},"end":{"line":1436,"column":3}},"1436":{"start":{"line":1437,"column":0},"end":{"line":1437,"column":0}},"1437":{"start":{"line":1438,"column":0},"end":{"line":1438,"column":44}},"1438":{"start":{"line":1439,"column":0},"end":{"line":1439,"column":41}},"1439":{"start":{"line":1440,"column":0},"end":{"line":1440,"column":56}},"1440":{"start":{"line":1441,"column":0},"end":{"line":1441,"column":11}},"1441":{"start":{"line":1442,"column":0},"end":{"line":1442,"column":45}},"1442":{"start":{"line":1443,"column":0},"end":{"line":1443,"column":60}},"1443":{"start":{"line":1444,"column":0},"end":{"line":1444,"column":5}},"1444":{"start":{"line":1445,"column":0},"end":{"line":1445,"column":0}},"1445":{"start":{"line":1446,"column":0},"end":{"line":1446,"column":73}},"1446":{"start":{"line":1447,"column":0},"end":{"line":1447,"column":59}},"1447":{"start":{"line":1448,"column":0},"end":{"line":1448,"column":0}},"1448":{"start":{"line":1449,"column":0},"end":{"line":1449,"column":63}},"1449":{"start":{"line":1450,"column":0},"end":{"line":1450,"column":22}},"1450":{"start":{"line":1451,"column":0},"end":{"line":1451,"column":111}},"1451":{"start":{"line":1452,"column":0},"end":{"line":1452,"column":7}},"1452":{"start":{"line":1453,"column":0},"end":{"line":1453,"column":5}},"1453":{"start":{"line":1454,"column":0},"end":{"line":1454,"column":0}},"1454":{"start":{"line":1455,"column":0},"end":{"line":1455,"column":50}},"1455":{"start":{"line":1456,"column":0},"end":{"line":1456,"column":47}},"1456":{"start":{"line":1457,"column":0},"end":{"line":1457,"column":0}},"1457":{"start":{"line":1458,"column":0},"end":{"line":1458,"column":47}},"1458":{"start":{"line":1459,"column":0},"end":{"line":1459,"column":22}},"1459":{"start":{"line":1460,"column":0},"end":{"line":1460,"column":99}},"1460":{"start":{"line":1461,"column":0},"end":{"line":1461,"column":7}},"1461":{"start":{"line":1462,"column":0},"end":{"line":1462,"column":5}},"1462":{"start":{"line":1463,"column":0},"end":{"line":1463,"column":3}},"1463":{"start":{"line":1464,"column":0},"end":{"line":1464,"column":0}},"1464":{"start":{"line":1465,"column":0},"end":{"line":1465,"column":5}},"1465":{"start":{"line":1466,"column":0},"end":{"line":1466,"column":4}},"1466":{"start":{"line":1467,"column":0},"end":{"line":1467,"column":80}},"1467":{"start":{"line":1468,"column":0},"end":{"line":1468,"column":171}},"1468":{"start":{"line":1469,"column":0},"end":{"line":1469,"column":114}},"1469":{"start":{"line":1470,"column":0},"end":{"line":1470,"column":94}},"1470":{"start":{"line":1471,"column":0},"end":{"line":1471,"column":160}},"1471":{"start":{"line":1472,"column":0},"end":{"line":1472,"column":60}},"1472":{"start":{"line":1473,"column":0},"end":{"line":1473,"column":5}},"1473":{"start":{"line":1474,"column":0},"end":{"line":1474,"column":34}},"1474":{"start":{"line":1475,"column":0},"end":{"line":1475,"column":41}},"1475":{"start":{"line":1476,"column":0},"end":{"line":1476,"column":56}},"1476":{"start":{"line":1477,"column":0},"end":{"line":1477,"column":44}},"1477":{"start":{"line":1478,"column":0},"end":{"line":1478,"column":73}},"1478":{"start":{"line":1479,"column":0},"end":{"line":1479,"column":9}},"1479":{"start":{"line":1480,"column":0},"end":{"line":1480,"column":18}},"1480":{"start":{"line":1481,"column":0},"end":{"line":1481,"column":66}},"1481":{"start":{"line":1482,"column":0},"end":{"line":1482,"column":40}},"1482":{"start":{"line":1483,"column":0},"end":{"line":1483,"column":7}},"1483":{"start":{"line":1484,"column":0},"end":{"line":1484,"column":0}},"1484":{"start":{"line":1485,"column":0},"end":{"line":1485,"column":66}},"1485":{"start":{"line":1486,"column":0},"end":{"line":1486,"column":90}},"1486":{"start":{"line":1487,"column":0},"end":{"line":1487,"column":0}},"1487":{"start":{"line":1488,"column":0},"end":{"line":1488,"column":69}},"1488":{"start":{"line":1489,"column":0},"end":{"line":1489,"column":52}},"1489":{"start":{"line":1490,"column":0},"end":{"line":1490,"column":69}},"1490":{"start":{"line":1491,"column":0},"end":{"line":1491,"column":62}},"1491":{"start":{"line":1492,"column":0},"end":{"line":1492,"column":78}},"1492":{"start":{"line":1493,"column":0},"end":{"line":1493,"column":0}},"1493":{"start":{"line":1494,"column":0},"end":{"line":1494,"column":12}},"1494":{"start":{"line":1495,"column":0},"end":{"line":1495,"column":42}},"1495":{"start":{"line":1496,"column":0},"end":{"line":1496,"column":45}},"1496":{"start":{"line":1497,"column":0},"end":{"line":1497,"column":11}},"1497":{"start":{"line":1498,"column":0},"end":{"line":1498,"column":23}},"1498":{"start":{"line":1499,"column":0},"end":{"line":1499,"column":9}},"1499":{"start":{"line":1500,"column":0},"end":{"line":1500,"column":0}},"1500":{"start":{"line":1501,"column":0},"end":{"line":1501,"column":49}},"1501":{"start":{"line":1502,"column":0},"end":{"line":1502,"column":64}},"1502":{"start":{"line":1503,"column":0},"end":{"line":1503,"column":9}},"1503":{"start":{"line":1504,"column":0},"end":{"line":1504,"column":0}},"1504":{"start":{"line":1505,"column":0},"end":{"line":1505,"column":60}},"1505":{"start":{"line":1506,"column":0},"end":{"line":1506,"column":24}},"1506":{"start":{"line":1507,"column":0},"end":{"line":1507,"column":48}},"1507":{"start":{"line":1508,"column":0},"end":{"line":1508,"column":10}},"1508":{"start":{"line":1509,"column":0},"end":{"line":1509,"column":0}},"1509":{"start":{"line":1510,"column":0},"end":{"line":1510,"column":39}},"1510":{"start":{"line":1511,"column":0},"end":{"line":1511,"column":26}},"1511":{"start":{"line":1512,"column":0},"end":{"line":1512,"column":69}},"1512":{"start":{"line":1513,"column":0},"end":{"line":1513,"column":11}},"1513":{"start":{"line":1514,"column":0},"end":{"line":1514,"column":9}},"1514":{"start":{"line":1515,"column":0},"end":{"line":1515,"column":0}},"1515":{"start":{"line":1516,"column":0},"end":{"line":1516,"column":44}},"1516":{"start":{"line":1517,"column":0},"end":{"line":1517,"column":46}},"1517":{"start":{"line":1518,"column":0},"end":{"line":1518,"column":0}},"1518":{"start":{"line":1519,"column":0},"end":{"line":1519,"column":20}},"1519":{"start":{"line":1520,"column":0},"end":{"line":1520,"column":93}},"1520":{"start":{"line":1521,"column":0},"end":{"line":1521,"column":9}},"1521":{"start":{"line":1522,"column":0},"end":{"line":1522,"column":0}},"1522":{"start":{"line":1523,"column":0},"end":{"line":1523,"column":49}},"1523":{"start":{"line":1524,"column":0},"end":{"line":1524,"column":19}},"1524":{"start":{"line":1525,"column":0},"end":{"line":1525,"column":21}},"1525":{"start":{"line":1526,"column":0},"end":{"line":1526,"column":19}},"1526":{"start":{"line":1527,"column":0},"end":{"line":1527,"column":9}},"1527":{"start":{"line":1528,"column":0},"end":{"line":1528,"column":12}},"1528":{"start":{"line":1529,"column":0},"end":{"line":1529,"column":55}},"1529":{"start":{"line":1530,"column":0},"end":{"line":1530,"column":64}},"1530":{"start":{"line":1531,"column":0},"end":{"line":1531,"column":11}},"1531":{"start":{"line":1532,"column":0},"end":{"line":1532,"column":50}},"1532":{"start":{"line":1533,"column":0},"end":{"line":1533,"column":46}},"1533":{"start":{"line":1534,"column":0},"end":{"line":1534,"column":28}},"1534":{"start":{"line":1535,"column":0},"end":{"line":1535,"column":64}},"1535":{"start":{"line":1536,"column":0},"end":{"line":1536,"column":73}},"1536":{"start":{"line":1537,"column":0},"end":{"line":1537,"column":23}},"1537":{"start":{"line":1538,"column":0},"end":{"line":1538,"column":76}},"1538":{"start":{"line":1539,"column":0},"end":{"line":1539,"column":0}},"1539":{"start":{"line":1540,"column":0},"end":{"line":1540,"column":44}},"1540":{"start":{"line":1541,"column":0},"end":{"line":1541,"column":50}},"1541":{"start":{"line":1542,"column":0},"end":{"line":1542,"column":48}},"1542":{"start":{"line":1543,"column":0},"end":{"line":1543,"column":16}},"1543":{"start":{"line":1544,"column":0},"end":{"line":1544,"column":26}},"1544":{"start":{"line":1545,"column":0},"end":{"line":1545,"column":70}},"1545":{"start":{"line":1546,"column":0},"end":{"line":1546,"column":11}},"1546":{"start":{"line":1547,"column":0},"end":{"line":1547,"column":9}},"1547":{"start":{"line":1548,"column":0},"end":{"line":1548,"column":0}},"1548":{"start":{"line":1549,"column":0},"end":{"line":1549,"column":59}},"1549":{"start":{"line":1550,"column":0},"end":{"line":1550,"column":20}},"1550":{"start":{"line":1551,"column":0},"end":{"line":1551,"column":51}},"1551":{"start":{"line":1552,"column":0},"end":{"line":1552,"column":28}},"1552":{"start":{"line":1553,"column":0},"end":{"line":1553,"column":30}},"1553":{"start":{"line":1554,"column":0},"end":{"line":1554,"column":12}},"1554":{"start":{"line":1555,"column":0},"end":{"line":1555,"column":9}},"1555":{"start":{"line":1556,"column":0},"end":{"line":1556,"column":0}},"1556":{"start":{"line":1557,"column":0},"end":{"line":1557,"column":26}},"1557":{"start":{"line":1558,"column":0},"end":{"line":1558,"column":7}},"1558":{"start":{"line":1559,"column":0},"end":{"line":1559,"column":21}},"1559":{"start":{"line":1560,"column":0},"end":{"line":1560,"column":69}},"1560":{"start":{"line":1561,"column":0},"end":{"line":1561,"column":19}},"1561":{"start":{"line":1562,"column":0},"end":{"line":1562,"column":47}},"1562":{"start":{"line":1563,"column":0},"end":{"line":1563,"column":29}},"1563":{"start":{"line":1564,"column":0},"end":{"line":1564,"column":7}},"1564":{"start":{"line":1565,"column":0},"end":{"line":1565,"column":19}},"1565":{"start":{"line":1566,"column":0},"end":{"line":1566,"column":5}},"1566":{"start":{"line":1567,"column":0},"end":{"line":1567,"column":17}},"1567":{"start":{"line":1568,"column":0},"end":{"line":1568,"column":3}},"1568":{"start":{"line":1569,"column":0},"end":{"line":1569,"column":0}},"1569":{"start":{"line":1570,"column":0},"end":{"line":1570,"column":79}},"1570":{"start":{"line":1571,"column":0},"end":{"line":1571,"column":42}},"1571":{"start":{"line":1572,"column":0},"end":{"line":1572,"column":76}},"1572":{"start":{"line":1573,"column":0},"end":{"line":1573,"column":0}},"1573":{"start":{"line":1574,"column":0},"end":{"line":1574,"column":20}},"1574":{"start":{"line":1575,"column":0},"end":{"line":1575,"column":3}},"1575":{"start":{"line":1576,"column":0},"end":{"line":1576,"column":0}},"1576":{"start":{"line":1577,"column":0},"end":{"line":1577,"column":5}},"1577":{"start":{"line":1578,"column":0},"end":{"line":1578,"column":31}},"1578":{"start":{"line":1579,"column":0},"end":{"line":1579,"column":4}},"1579":{"start":{"line":1580,"column":0},"end":{"line":1580,"column":132}},"1580":{"start":{"line":1581,"column":0},"end":{"line":1581,"column":116}},"1581":{"start":{"line":1582,"column":0},"end":{"line":1582,"column":83}},"1582":{"start":{"line":1583,"column":0},"end":{"line":1583,"column":4}},"1583":{"start":{"line":1584,"column":0},"end":{"line":1584,"column":54}},"1584":{"start":{"line":1585,"column":0},"end":{"line":1585,"column":81}},"1585":{"start":{"line":1586,"column":0},"end":{"line":1586,"column":69}},"1586":{"start":{"line":1587,"column":0},"end":{"line":1587,"column":115}},"1587":{"start":{"line":1588,"column":0},"end":{"line":1588,"column":4}},"1588":{"start":{"line":1589,"column":0},"end":{"line":1589,"column":13}},"1589":{"start":{"line":1590,"column":0},"end":{"line":1590,"column":40}},"1590":{"start":{"line":1591,"column":0},"end":{"line":1591,"column":65}},"1591":{"start":{"line":1592,"column":0},"end":{"line":1592,"column":53}},"1592":{"start":{"line":1593,"column":0},"end":{"line":1593,"column":47}},"1593":{"start":{"line":1594,"column":0},"end":{"line":1594,"column":4}},"1594":{"start":{"line":1595,"column":0},"end":{"line":1595,"column":40}},"1595":{"start":{"line":1596,"column":0},"end":{"line":1596,"column":15}},"1596":{"start":{"line":1597,"column":0},"end":{"line":1597,"column":26}},"1597":{"start":{"line":1598,"column":0},"end":{"line":1598,"column":25}},"1598":{"start":{"line":1599,"column":0},"end":{"line":1599,"column":8}},"1599":{"start":{"line":1600,"column":0},"end":{"line":1600,"column":4}},"1600":{"start":{"line":1601,"column":0},"end":{"line":1601,"column":58}},"1601":{"start":{"line":1602,"column":0},"end":{"line":1602,"column":13}},"1602":{"start":{"line":1603,"column":0},"end":{"line":1603,"column":30}},"1603":{"start":{"line":1604,"column":0},"end":{"line":1604,"column":16}},"1604":{"start":{"line":1605,"column":0},"end":{"line":1605,"column":8}},"1605":{"start":{"line":1606,"column":0},"end":{"line":1606,"column":4}},"1606":{"start":{"line":1607,"column":0},"end":{"line":1607,"column":41}},"1607":{"start":{"line":1608,"column":0},"end":{"line":1608,"column":49}},"1608":{"start":{"line":1609,"column":0},"end":{"line":1609,"column":63}},"1609":{"start":{"line":1610,"column":0},"end":{"line":1610,"column":8}},"1610":{"start":{"line":1611,"column":0},"end":{"line":1611,"column":4}},"1611":{"start":{"line":1612,"column":0},"end":{"line":1612,"column":74}},"1612":{"start":{"line":1613,"column":0},"end":{"line":1613,"column":67}},"1613":{"start":{"line":1614,"column":0},"end":{"line":1614,"column":4}},"1614":{"start":{"line":1615,"column":0},"end":{"line":1615,"column":31}},"1615":{"start":{"line":1616,"column":0},"end":{"line":1616,"column":50}},"1616":{"start":{"line":1617,"column":0},"end":{"line":1617,"column":4}},"1617":{"start":{"line":1618,"column":0},"end":{"line":1618,"column":47}},"1618":{"start":{"line":1619,"column":0},"end":{"line":1619,"column":4}},"1619":{"start":{"line":1620,"column":0},"end":{"line":1620,"column":5}},"1620":{"start":{"line":1621,"column":0},"end":{"line":1621,"column":22}},"1621":{"start":{"line":1622,"column":0},"end":{"line":1622,"column":39}},"1622":{"start":{"line":1623,"column":0},"end":{"line":1623,"column":30}},"1623":{"start":{"line":1624,"column":0},"end":{"line":1624,"column":75}},"1624":{"start":{"line":1625,"column":0},"end":{"line":1625,"column":0}},"1625":{"start":{"line":1626,"column":0},"end":{"line":1626,"column":59}},"1626":{"start":{"line":1627,"column":0},"end":{"line":1627,"column":59}},"1627":{"start":{"line":1628,"column":0},"end":{"line":1628,"column":36}},"1628":{"start":{"line":1629,"column":0},"end":{"line":1629,"column":6}},"1629":{"start":{"line":1630,"column":0},"end":{"line":1630,"column":0}},"1630":{"start":{"line":1631,"column":0},"end":{"line":1631,"column":33}},"1631":{"start":{"line":1632,"column":0},"end":{"line":1632,"column":62}},"1632":{"start":{"line":1633,"column":0},"end":{"line":1633,"column":5}},"1633":{"start":{"line":1634,"column":0},"end":{"line":1634,"column":0}},"1634":{"start":{"line":1635,"column":0},"end":{"line":1635,"column":97}},"1635":{"start":{"line":1636,"column":0},"end":{"line":1636,"column":54}},"1636":{"start":{"line":1637,"column":0},"end":{"line":1637,"column":70}},"1637":{"start":{"line":1638,"column":0},"end":{"line":1638,"column":31}},"1638":{"start":{"line":1639,"column":0},"end":{"line":1639,"column":8}},"1639":{"start":{"line":1640,"column":0},"end":{"line":1640,"column":0}},"1640":{"start":{"line":1641,"column":0},"end":{"line":1641,"column":45}},"1641":{"start":{"line":1642,"column":0},"end":{"line":1642,"column":77}},"1642":{"start":{"line":1643,"column":0},"end":{"line":1643,"column":7}},"1643":{"start":{"line":1644,"column":0},"end":{"line":1644,"column":5}},"1644":{"start":{"line":1645,"column":0},"end":{"line":1645,"column":0}},"1645":{"start":{"line":1646,"column":0},"end":{"line":1646,"column":39}},"1646":{"start":{"line":1647,"column":0},"end":{"line":1647,"column":0}},"1647":{"start":{"line":1648,"column":0},"end":{"line":1648,"column":32}},"1648":{"start":{"line":1649,"column":0},"end":{"line":1649,"column":7}},"1649":{"start":{"line":1650,"column":0},"end":{"line":1650,"column":27}},"1650":{"start":{"line":1651,"column":0},"end":{"line":1651,"column":18}},"1651":{"start":{"line":1652,"column":0},"end":{"line":1652,"column":8}},"1652":{"start":{"line":1653,"column":0},"end":{"line":1653,"column":51}},"1653":{"start":{"line":1654,"column":0},"end":{"line":1654,"column":5}},"1654":{"start":{"line":1655,"column":0},"end":{"line":1655,"column":3}},"1655":{"start":{"line":1656,"column":0},"end":{"line":1656,"column":0}},"1656":{"start":{"line":1657,"column":0},"end":{"line":1657,"column":26}},"1657":{"start":{"line":1658,"column":0},"end":{"line":1658,"column":56}},"1658":{"start":{"line":1659,"column":0},"end":{"line":1659,"column":43}},"1659":{"start":{"line":1660,"column":0},"end":{"line":1660,"column":0}},"1660":{"start":{"line":1661,"column":0},"end":{"line":1661,"column":56}},"1661":{"start":{"line":1662,"column":0},"end":{"line":1662,"column":0}},"1662":{"start":{"line":1663,"column":0},"end":{"line":1663,"column":31}},"1663":{"start":{"line":1664,"column":0},"end":{"line":1664,"column":44}},"1664":{"start":{"line":1665,"column":0},"end":{"line":1665,"column":36}},"1665":{"start":{"line":1666,"column":0},"end":{"line":1666,"column":46}},"1666":{"start":{"line":1667,"column":0},"end":{"line":1667,"column":6}},"1667":{"start":{"line":1668,"column":0},"end":{"line":1668,"column":3}},"1668":{"start":{"line":1669,"column":0},"end":{"line":1669,"column":0}},"1669":{"start":{"line":1670,"column":0},"end":{"line":1670,"column":65}},"1670":{"start":{"line":1671,"column":0},"end":{"line":1671,"column":22}},"1671":{"start":{"line":1672,"column":0},"end":{"line":1672,"column":42}},"1672":{"start":{"line":1673,"column":0},"end":{"line":1673,"column":77}},"1673":{"start":{"line":1674,"column":0},"end":{"line":1674,"column":0}},"1674":{"start":{"line":1675,"column":0},"end":{"line":1675,"column":15}},"1675":{"start":{"line":1676,"column":0},"end":{"line":1676,"column":66}},"1676":{"start":{"line":1677,"column":0},"end":{"line":1677,"column":56}},"1677":{"start":{"line":1678,"column":0},"end":{"line":1678,"column":29}},"1678":{"start":{"line":1679,"column":0},"end":{"line":1679,"column":27}},"1679":{"start":{"line":1680,"column":0},"end":{"line":1680,"column":7}},"1680":{"start":{"line":1681,"column":0},"end":{"line":1681,"column":51}},"1681":{"start":{"line":1682,"column":0},"end":{"line":1682,"column":52}},"1682":{"start":{"line":1683,"column":0},"end":{"line":1683,"column":17}},"1683":{"start":{"line":1684,"column":0},"end":{"line":1684,"column":7}},"1684":{"start":{"line":1685,"column":0},"end":{"line":1685,"column":5}},"1685":{"start":{"line":1686,"column":0},"end":{"line":1686,"column":41}},"1686":{"start":{"line":1687,"column":0},"end":{"line":1687,"column":22}},"1687":{"start":{"line":1688,"column":0},"end":{"line":1688,"column":5}},"1688":{"start":{"line":1689,"column":0},"end":{"line":1689,"column":54}},"1689":{"start":{"line":1690,"column":0},"end":{"line":1690,"column":50}},"1690":{"start":{"line":1691,"column":0},"end":{"line":1691,"column":7}},"1691":{"start":{"line":1692,"column":0},"end":{"line":1692,"column":9}},"1692":{"start":{"line":1693,"column":0},"end":{"line":1693,"column":26}},"1693":{"start":{"line":1694,"column":0},"end":{"line":1694,"column":32}},"1694":{"start":{"line":1695,"column":0},"end":{"line":1695,"column":10}},"1695":{"start":{"line":1696,"column":0},"end":{"line":1696,"column":9}},"1696":{"start":{"line":1697,"column":0},"end":{"line":1697,"column":24}},"1697":{"start":{"line":1698,"column":0},"end":{"line":1698,"column":33}},"1698":{"start":{"line":1699,"column":0},"end":{"line":1699,"column":10}},"1699":{"start":{"line":1700,"column":0},"end":{"line":1700,"column":9}},"1700":{"start":{"line":1701,"column":0},"end":{"line":1701,"column":24}},"1701":{"start":{"line":1702,"column":0},"end":{"line":1702,"column":42}},"1702":{"start":{"line":1703,"column":0},"end":{"line":1703,"column":9}},"1703":{"start":{"line":1704,"column":0},"end":{"line":1704,"column":8}},"1704":{"start":{"line":1705,"column":0},"end":{"line":1705,"column":7}},"1705":{"start":{"line":1706,"column":0},"end":{"line":1706,"column":41}},"1706":{"start":{"line":1707,"column":0},"end":{"line":1707,"column":46}},"1707":{"start":{"line":1708,"column":0},"end":{"line":1708,"column":17}},"1708":{"start":{"line":1709,"column":0},"end":{"line":1709,"column":7}},"1709":{"start":{"line":1710,"column":0},"end":{"line":1710,"column":5}},"1710":{"start":{"line":1711,"column":0},"end":{"line":1711,"column":51}},"1711":{"start":{"line":1712,"column":0},"end":{"line":1712,"column":3}},"1712":{"start":{"line":1713,"column":0},"end":{"line":1713,"column":0}},"1713":{"start":{"line":1714,"column":0},"end":{"line":1714,"column":32}},"1714":{"start":{"line":1715,"column":0},"end":{"line":1715,"column":21}},"1715":{"start":{"line":1716,"column":0},"end":{"line":1716,"column":18}},"1716":{"start":{"line":1717,"column":0},"end":{"line":1717,"column":19}},"1717":{"start":{"line":1718,"column":0},"end":{"line":1718,"column":31}},"1718":{"start":{"line":1719,"column":0},"end":{"line":1719,"column":20}},"1719":{"start":{"line":1720,"column":0},"end":{"line":1720,"column":39}},"1720":{"start":{"line":1721,"column":0},"end":{"line":1721,"column":36}},"1721":{"start":{"line":1722,"column":0},"end":{"line":1722,"column":6}},"1722":{"start":{"line":1723,"column":0},"end":{"line":1723,"column":3}},"1723":{"start":{"line":1724,"column":0},"end":{"line":1724,"column":0}},"1724":{"start":{"line":1725,"column":0},"end":{"line":1725,"column":43}},"1725":{"start":{"line":1726,"column":0},"end":{"line":1726,"column":41}},"1726":{"start":{"line":1727,"column":0},"end":{"line":1727,"column":62}},"1727":{"start":{"line":1728,"column":0},"end":{"line":1728,"column":60}},"1728":{"start":{"line":1729,"column":0},"end":{"line":1729,"column":43}},"1729":{"start":{"line":1730,"column":0},"end":{"line":1730,"column":29}},"1730":{"start":{"line":1731,"column":0},"end":{"line":1731,"column":27}},"1731":{"start":{"line":1732,"column":0},"end":{"line":1732,"column":20}},"1732":{"start":{"line":1733,"column":0},"end":{"line":1733,"column":5}},"1733":{"start":{"line":1734,"column":0},"end":{"line":1734,"column":72}},"1734":{"start":{"line":1735,"column":0},"end":{"line":1735,"column":16}},"1735":{"start":{"line":1736,"column":0},"end":{"line":1736,"column":3}},"1736":{"start":{"line":1737,"column":0},"end":{"line":1737,"column":0}},"1737":{"start":{"line":1738,"column":0},"end":{"line":1738,"column":46}},"1738":{"start":{"line":1739,"column":0},"end":{"line":1739,"column":22}},"1739":{"start":{"line":1740,"column":0},"end":{"line":1740,"column":3}},"1740":{"start":{"line":1741,"column":0},"end":{"line":1741,"column":0}},"1741":{"start":{"line":1742,"column":0},"end":{"line":1742,"column":22}},"1742":{"start":{"line":1743,"column":0},"end":{"line":1743,"column":19}},"1743":{"start":{"line":1744,"column":0},"end":{"line":1744,"column":43}},"1744":{"start":{"line":1745,"column":0},"end":{"line":1745,"column":30}},"1745":{"start":{"line":1746,"column":0},"end":{"line":1746,"column":28}},"1746":{"start":{"line":1747,"column":0},"end":{"line":1747,"column":26}},"1747":{"start":{"line":1748,"column":0},"end":{"line":1748,"column":23}},"1748":{"start":{"line":1749,"column":0},"end":{"line":1749,"column":22}},"1749":{"start":{"line":1750,"column":0},"end":{"line":1750,"column":18}},"1750":{"start":{"line":1751,"column":0},"end":{"line":1751,"column":47}},"1751":{"start":{"line":1752,"column":0},"end":{"line":1752,"column":46}},"1752":{"start":{"line":1753,"column":0},"end":{"line":1753,"column":28}},"1753":{"start":{"line":1754,"column":0},"end":{"line":1754,"column":27}},"1754":{"start":{"line":1755,"column":0},"end":{"line":1755,"column":10}},"1755":{"start":{"line":1756,"column":0},"end":{"line":1756,"column":36}},"1756":{"start":{"line":1757,"column":0},"end":{"line":1757,"column":11}},"1757":{"start":{"line":1758,"column":0},"end":{"line":1758,"column":33}},"1758":{"start":{"line":1759,"column":0},"end":{"line":1759,"column":37}},"1759":{"start":{"line":1760,"column":0},"end":{"line":1760,"column":34}},"1760":{"start":{"line":1761,"column":0},"end":{"line":1761,"column":12}},"1761":{"start":{"line":1762,"column":0},"end":{"line":1762,"column":28}},"1762":{"start":{"line":1763,"column":0},"end":{"line":1763,"column":9}},"1763":{"start":{"line":1764,"column":0},"end":{"line":1764,"column":22}},"1764":{"start":{"line":1765,"column":0},"end":{"line":1765,"column":51}},"1765":{"start":{"line":1766,"column":0},"end":{"line":1766,"column":26}},"1766":{"start":{"line":1767,"column":0},"end":{"line":1767,"column":70}},"1767":{"start":{"line":1768,"column":0},"end":{"line":1768,"column":11}},"1768":{"start":{"line":1769,"column":0},"end":{"line":1769,"column":9}},"1769":{"start":{"line":1770,"column":0},"end":{"line":1770,"column":57}},"1770":{"start":{"line":1771,"column":0},"end":{"line":1771,"column":36}},"1771":{"start":{"line":1772,"column":0},"end":{"line":1772,"column":11}},"1772":{"start":{"line":1773,"column":0},"end":{"line":1773,"column":33}},"1773":{"start":{"line":1774,"column":0},"end":{"line":1774,"column":37}},"1774":{"start":{"line":1775,"column":0},"end":{"line":1775,"column":34}},"1775":{"start":{"line":1776,"column":0},"end":{"line":1776,"column":12}},"1776":{"start":{"line":1777,"column":0},"end":{"line":1777,"column":28}},"1777":{"start":{"line":1778,"column":0},"end":{"line":1778,"column":9}},"1778":{"start":{"line":1779,"column":0},"end":{"line":1779,"column":14}},"1779":{"start":{"line":1780,"column":0},"end":{"line":1780,"column":61}},"1780":{"start":{"line":1781,"column":0},"end":{"line":1781,"column":5}},"1781":{"start":{"line":1782,"column":0},"end":{"line":1782,"column":3}},"1782":{"start":{"line":1783,"column":0},"end":{"line":1783,"column":0}},"1783":{"start":{"line":1784,"column":0},"end":{"line":1784,"column":60}},"1784":{"start":{"line":1785,"column":0},"end":{"line":1785,"column":60}},"1785":{"start":{"line":1786,"column":0},"end":{"line":1786,"column":0}},"1786":{"start":{"line":1787,"column":0},"end":{"line":1787,"column":23}},"1787":{"start":{"line":1788,"column":0},"end":{"line":1788,"column":25}},"1788":{"start":{"line":1789,"column":0},"end":{"line":1789,"column":40}},"1789":{"start":{"line":1790,"column":0},"end":{"line":1790,"column":25}},"1790":{"start":{"line":1791,"column":0},"end":{"line":1791,"column":38}},"1791":{"start":{"line":1792,"column":0},"end":{"line":1792,"column":40}},"1792":{"start":{"line":1793,"column":0},"end":{"line":1793,"column":25}},"1793":{"start":{"line":1794,"column":0},"end":{"line":1794,"column":116}},"1794":{"start":{"line":1795,"column":0},"end":{"line":1795,"column":13}},"1795":{"start":{"line":1796,"column":0},"end":{"line":1796,"column":17}},"1796":{"start":{"line":1797,"column":0},"end":{"line":1797,"column":47}},"1797":{"start":{"line":1798,"column":0},"end":{"line":1798,"column":33}},"1798":{"start":{"line":1799,"column":0},"end":{"line":1799,"column":31}},"1799":{"start":{"line":1800,"column":0},"end":{"line":1800,"column":11}},"1800":{"start":{"line":1801,"column":0},"end":{"line":1801,"column":10}},"1801":{"start":{"line":1802,"column":0},"end":{"line":1802,"column":7}},"1802":{"start":{"line":1803,"column":0},"end":{"line":1803,"column":22}},"1803":{"start":{"line":1804,"column":0},"end":{"line":1804,"column":5}},"1804":{"start":{"line":1805,"column":0},"end":{"line":1805,"column":47}},"1805":{"start":{"line":1806,"column":0},"end":{"line":1806,"column":3}},"1806":{"start":{"line":1807,"column":0},"end":{"line":1807,"column":0}},"1807":{"start":{"line":1808,"column":0},"end":{"line":1808,"column":24}},"1808":{"start":{"line":1809,"column":0},"end":{"line":1809,"column":19}},"1809":{"start":{"line":1810,"column":0},"end":{"line":1810,"column":43}},"1810":{"start":{"line":1811,"column":0},"end":{"line":1811,"column":30}},"1811":{"start":{"line":1812,"column":0},"end":{"line":1812,"column":28}},"1812":{"start":{"line":1813,"column":0},"end":{"line":1813,"column":26}},"1813":{"start":{"line":1814,"column":0},"end":{"line":1814,"column":23}},"1814":{"start":{"line":1815,"column":0},"end":{"line":1815,"column":22}},"1815":{"start":{"line":1816,"column":0},"end":{"line":1816,"column":18}},"1816":{"start":{"line":1817,"column":0},"end":{"line":1817,"column":55}},"1817":{"start":{"line":1818,"column":0},"end":{"line":1818,"column":42}},"1818":{"start":{"line":1819,"column":0},"end":{"line":1819,"column":11}},"1819":{"start":{"line":1820,"column":0},"end":{"line":1820,"column":33}},"1820":{"start":{"line":1821,"column":0},"end":{"line":1821,"column":37}},"1821":{"start":{"line":1822,"column":0},"end":{"line":1822,"column":34}},"1822":{"start":{"line":1823,"column":0},"end":{"line":1823,"column":12}},"1823":{"start":{"line":1824,"column":0},"end":{"line":1824,"column":28}},"1824":{"start":{"line":1825,"column":0},"end":{"line":1825,"column":9}},"1825":{"start":{"line":1826,"column":0},"end":{"line":1826,"column":22}},"1826":{"start":{"line":1827,"column":0},"end":{"line":1827,"column":31}},"1827":{"start":{"line":1828,"column":0},"end":{"line":1828,"column":26}},"1828":{"start":{"line":1829,"column":0},"end":{"line":1829,"column":71}},"1829":{"start":{"line":1830,"column":0},"end":{"line":1830,"column":11}},"1830":{"start":{"line":1831,"column":0},"end":{"line":1831,"column":9}},"1831":{"start":{"line":1832,"column":0},"end":{"line":1832,"column":57}},"1832":{"start":{"line":1833,"column":0},"end":{"line":1833,"column":42}},"1833":{"start":{"line":1834,"column":0},"end":{"line":1834,"column":11}},"1834":{"start":{"line":1835,"column":0},"end":{"line":1835,"column":33}},"1835":{"start":{"line":1836,"column":0},"end":{"line":1836,"column":37}},"1836":{"start":{"line":1837,"column":0},"end":{"line":1837,"column":34}},"1837":{"start":{"line":1838,"column":0},"end":{"line":1838,"column":12}},"1838":{"start":{"line":1839,"column":0},"end":{"line":1839,"column":28}},"1839":{"start":{"line":1840,"column":0},"end":{"line":1840,"column":9}},"1840":{"start":{"line":1841,"column":0},"end":{"line":1841,"column":14}},"1841":{"start":{"line":1842,"column":0},"end":{"line":1842,"column":61}},"1842":{"start":{"line":1843,"column":0},"end":{"line":1843,"column":5}},"1843":{"start":{"line":1844,"column":0},"end":{"line":1844,"column":3}},"1844":{"start":{"line":1845,"column":0},"end":{"line":1845,"column":0}},"1845":{"start":{"line":1846,"column":0},"end":{"line":1846,"column":26}},"1846":{"start":{"line":1847,"column":0},"end":{"line":1847,"column":21}},"1847":{"start":{"line":1848,"column":0},"end":{"line":1848,"column":63}},"1848":{"start":{"line":1849,"column":0},"end":{"line":1849,"column":63}},"1849":{"start":{"line":1850,"column":0},"end":{"line":1850,"column":18}},"1850":{"start":{"line":1851,"column":0},"end":{"line":1851,"column":10}},"1851":{"start":{"line":1852,"column":0},"end":{"line":1852,"column":76}},"1852":{"start":{"line":1853,"column":0},"end":{"line":1853,"column":22}},"1853":{"start":{"line":1854,"column":0},"end":{"line":1854,"column":29}},"1854":{"start":{"line":1855,"column":0},"end":{"line":1855,"column":5}},"1855":{"start":{"line":1856,"column":0},"end":{"line":1856,"column":20}},"1856":{"start":{"line":1857,"column":0},"end":{"line":1857,"column":48}},"1857":{"start":{"line":1858,"column":0},"end":{"line":1858,"column":40}},"1858":{"start":{"line":1859,"column":0},"end":{"line":1859,"column":5}},"1859":{"start":{"line":1860,"column":0},"end":{"line":1860,"column":20}},"1860":{"start":{"line":1861,"column":0},"end":{"line":1861,"column":69}},"1861":{"start":{"line":1862,"column":0},"end":{"line":1862,"column":5}},"1862":{"start":{"line":1863,"column":0},"end":{"line":1863,"column":3}},"1863":{"start":{"line":1864,"column":0},"end":{"line":1864,"column":0}},"1864":{"start":{"line":1865,"column":0},"end":{"line":1865,"column":43}},"1865":{"start":{"line":1866,"column":0},"end":{"line":1866,"column":38}},"1866":{"start":{"line":1867,"column":0},"end":{"line":1867,"column":66}},"1867":{"start":{"line":1868,"column":0},"end":{"line":1868,"column":59}},"1868":{"start":{"line":1869,"column":0},"end":{"line":1869,"column":5}},"1869":{"start":{"line":1870,"column":0},"end":{"line":1870,"column":37}},"1870":{"start":{"line":1871,"column":0},"end":{"line":1871,"column":65}},"1871":{"start":{"line":1872,"column":0},"end":{"line":1872,"column":59}},"1872":{"start":{"line":1873,"column":0},"end":{"line":1873,"column":5}},"1873":{"start":{"line":1874,"column":0},"end":{"line":1874,"column":57}},"1874":{"start":{"line":1875,"column":0},"end":{"line":1875,"column":3}},"1875":{"start":{"line":1876,"column":0},"end":{"line":1876,"column":0}},"1876":{"start":{"line":1877,"column":0},"end":{"line":1877,"column":72}},"1877":{"start":{"line":1878,"column":0},"end":{"line":1878,"column":28}},"1878":{"start":{"line":1879,"column":0},"end":{"line":1879,"column":0}},"1879":{"start":{"line":1880,"column":0},"end":{"line":1880,"column":60}},"1880":{"start":{"line":1881,"column":0},"end":{"line":1881,"column":0}},"1881":{"start":{"line":1882,"column":0},"end":{"line":1882,"column":22}},"1882":{"start":{"line":1883,"column":0},"end":{"line":1883,"column":19}},"1883":{"start":{"line":1884,"column":0},"end":{"line":1884,"column":40}},"1884":{"start":{"line":1885,"column":0},"end":{"line":1885,"column":25}},"1885":{"start":{"line":1886,"column":0},"end":{"line":1886,"column":38}},"1886":{"start":{"line":1887,"column":0},"end":{"line":1887,"column":42}},"1887":{"start":{"line":1888,"column":0},"end":{"line":1888,"column":25}},"1888":{"start":{"line":1889,"column":0},"end":{"line":1889,"column":94}},"1889":{"start":{"line":1890,"column":0},"end":{"line":1890,"column":13}},"1890":{"start":{"line":1891,"column":0},"end":{"line":1891,"column":17}},"1891":{"start":{"line":1892,"column":0},"end":{"line":1892,"column":47}},"1892":{"start":{"line":1893,"column":0},"end":{"line":1893,"column":33}},"1893":{"start":{"line":1894,"column":0},"end":{"line":1894,"column":25}},"1894":{"start":{"line":1895,"column":0},"end":{"line":1895,"column":34}},"1895":{"start":{"line":1896,"column":0},"end":{"line":1896,"column":60}},"1896":{"start":{"line":1897,"column":0},"end":{"line":1897,"column":13}},"1897":{"start":{"line":1898,"column":0},"end":{"line":1898,"column":11}},"1898":{"start":{"line":1899,"column":0},"end":{"line":1899,"column":10}},"1899":{"start":{"line":1900,"column":0},"end":{"line":1900,"column":7}},"1900":{"start":{"line":1901,"column":0},"end":{"line":1901,"column":22}},"1901":{"start":{"line":1902,"column":0},"end":{"line":1902,"column":5}},"1902":{"start":{"line":1903,"column":0},"end":{"line":1903,"column":46}},"1903":{"start":{"line":1904,"column":0},"end":{"line":1904,"column":3}},"1904":{"start":{"line":1905,"column":0},"end":{"line":1905,"column":0}},"1905":{"start":{"line":1906,"column":0},"end":{"line":1906,"column":70}},"1906":{"start":{"line":1907,"column":0},"end":{"line":1907,"column":28}},"1907":{"start":{"line":1908,"column":0},"end":{"line":1908,"column":60}},"1908":{"start":{"line":1909,"column":0},"end":{"line":1909,"column":0}},"1909":{"start":{"line":1910,"column":0},"end":{"line":1910,"column":22}},"1910":{"start":{"line":1911,"column":0},"end":{"line":1911,"column":42}},"1911":{"start":{"line":1912,"column":0},"end":{"line":1912,"column":70}},"1912":{"start":{"line":1913,"column":0},"end":{"line":1913,"column":57}},"1913":{"start":{"line":1914,"column":0},"end":{"line":1914,"column":41}},"1914":{"start":{"line":1915,"column":0},"end":{"line":1915,"column":11}},"1915":{"start":{"line":1916,"column":0},"end":{"line":1916,"column":46}},"1916":{"start":{"line":1917,"column":0},"end":{"line":1917,"column":56}},"1917":{"start":{"line":1918,"column":0},"end":{"line":1918,"column":12}},"1918":{"start":{"line":1919,"column":0},"end":{"line":1919,"column":28}},"1919":{"start":{"line":1920,"column":0},"end":{"line":1920,"column":9}},"1920":{"start":{"line":1921,"column":0},"end":{"line":1921,"column":7}},"1921":{"start":{"line":1922,"column":0},"end":{"line":1922,"column":19}},"1922":{"start":{"line":1923,"column":0},"end":{"line":1923,"column":40}},"1923":{"start":{"line":1924,"column":0},"end":{"line":1924,"column":25}},"1924":{"start":{"line":1925,"column":0},"end":{"line":1925,"column":38}},"1925":{"start":{"line":1926,"column":0},"end":{"line":1926,"column":42}},"1926":{"start":{"line":1927,"column":0},"end":{"line":1927,"column":25}},"1927":{"start":{"line":1928,"column":0},"end":{"line":1928,"column":94}},"1928":{"start":{"line":1929,"column":0},"end":{"line":1929,"column":13}},"1929":{"start":{"line":1930,"column":0},"end":{"line":1930,"column":17}},"1930":{"start":{"line":1931,"column":0},"end":{"line":1931,"column":47}},"1931":{"start":{"line":1932,"column":0},"end":{"line":1932,"column":33}},"1932":{"start":{"line":1933,"column":0},"end":{"line":1933,"column":22}},"1933":{"start":{"line":1934,"column":0},"end":{"line":1934,"column":11}},"1934":{"start":{"line":1935,"column":0},"end":{"line":1935,"column":10}},"1935":{"start":{"line":1936,"column":0},"end":{"line":1936,"column":7}},"1936":{"start":{"line":1937,"column":0},"end":{"line":1937,"column":22}},"1937":{"start":{"line":1938,"column":0},"end":{"line":1938,"column":5}},"1938":{"start":{"line":1939,"column":0},"end":{"line":1939,"column":46}},"1939":{"start":{"line":1940,"column":0},"end":{"line":1940,"column":3}},"1940":{"start":{"line":1941,"column":0},"end":{"line":1941,"column":0}},"1941":{"start":{"line":1942,"column":0},"end":{"line":1942,"column":36}},"1942":{"start":{"line":1943,"column":0},"end":{"line":1943,"column":32}},"1943":{"start":{"line":1944,"column":0},"end":{"line":1944,"column":33}},"1944":{"start":{"line":1945,"column":0},"end":{"line":1945,"column":42}},"1945":{"start":{"line":1946,"column":0},"end":{"line":1946,"column":29}},"1946":{"start":{"line":1947,"column":0},"end":{"line":1947,"column":37}},"1947":{"start":{"line":1948,"column":0},"end":{"line":1948,"column":36}},"1948":{"start":{"line":1949,"column":0},"end":{"line":1949,"column":75}},"1949":{"start":{"line":1950,"column":0},"end":{"line":1950,"column":36}},"1950":{"start":{"line":1951,"column":0},"end":{"line":1951,"column":20}},"1951":{"start":{"line":1952,"column":0},"end":{"line":1952,"column":35}},"1952":{"start":{"line":1953,"column":0},"end":{"line":1953,"column":49}},"1953":{"start":{"line":1954,"column":0},"end":{"line":1954,"column":43}},"1954":{"start":{"line":1955,"column":0},"end":{"line":1955,"column":13}},"1955":{"start":{"line":1956,"column":0},"end":{"line":1956,"column":12}},"1956":{"start":{"line":1957,"column":0},"end":{"line":1957,"column":57}},"1957":{"start":{"line":1958,"column":0},"end":{"line":1958,"column":21}},"1958":{"start":{"line":1959,"column":0},"end":{"line":1959,"column":29}},"1959":{"start":{"line":1960,"column":0},"end":{"line":1960,"column":9}},"1960":{"start":{"line":1961,"column":0},"end":{"line":1961,"column":7}},"1961":{"start":{"line":1962,"column":0},"end":{"line":1962,"column":25}},"1962":{"start":{"line":1963,"column":0},"end":{"line":1963,"column":42}},"1963":{"start":{"line":1964,"column":0},"end":{"line":1964,"column":56}},"1964":{"start":{"line":1965,"column":0},"end":{"line":1965,"column":50}},"1965":{"start":{"line":1966,"column":0},"end":{"line":1966,"column":7}},"1966":{"start":{"line":1967,"column":0},"end":{"line":1967,"column":54}},"1967":{"start":{"line":1968,"column":0},"end":{"line":1968,"column":18}},"1968":{"start":{"line":1969,"column":0},"end":{"line":1969,"column":27}},"1969":{"start":{"line":1970,"column":0},"end":{"line":1970,"column":7}},"1970":{"start":{"line":1971,"column":0},"end":{"line":1971,"column":5}},"1971":{"start":{"line":1972,"column":0},"end":{"line":1972,"column":20}},"1972":{"start":{"line":1973,"column":0},"end":{"line":1973,"column":72}},"1973":{"start":{"line":1974,"column":0},"end":{"line":1974,"column":5}},"1974":{"start":{"line":1975,"column":0},"end":{"line":1975,"column":3}},"1975":{"start":{"line":1976,"column":0},"end":{"line":1976,"column":0}},"1976":{"start":{"line":1977,"column":0},"end":{"line":1977,"column":5}},"1977":{"start":{"line":1978,"column":0},"end":{"line":1978,"column":71}},"1978":{"start":{"line":1979,"column":0},"end":{"line":1979,"column":78}},"1979":{"start":{"line":1980,"column":0},"end":{"line":1980,"column":102}},"1980":{"start":{"line":1981,"column":0},"end":{"line":1981,"column":5}},"1981":{"start":{"line":1982,"column":0},"end":{"line":1982,"column":64}},"1982":{"start":{"line":1983,"column":0},"end":{"line":1983,"column":60}},"1983":{"start":{"line":1984,"column":0},"end":{"line":1984,"column":80}},"1984":{"start":{"line":1985,"column":0},"end":{"line":1985,"column":3}},"1985":{"start":{"line":1986,"column":0},"end":{"line":1986,"column":0}},"1986":{"start":{"line":1987,"column":0},"end":{"line":1987,"column":34}},"1987":{"start":{"line":1988,"column":0},"end":{"line":1988,"column":60}},"1988":{"start":{"line":1989,"column":0},"end":{"line":1989,"column":62}},"1989":{"start":{"line":1990,"column":0},"end":{"line":1990,"column":23}},"1990":{"start":{"line":1991,"column":0},"end":{"line":1991,"column":10}},"1991":{"start":{"line":1992,"column":0},"end":{"line":1992,"column":6}},"1992":{"start":{"line":1993,"column":0},"end":{"line":1993,"column":3}},"1993":{"start":{"line":1994,"column":0},"end":{"line":1994,"column":0}},"1994":{"start":{"line":1995,"column":0},"end":{"line":1995,"column":33}},"1995":{"start":{"line":1996,"column":0},"end":{"line":1996,"column":60}},"1996":{"start":{"line":1997,"column":0},"end":{"line":1997,"column":61}},"1997":{"start":{"line":1998,"column":0},"end":{"line":1998,"column":23}},"1998":{"start":{"line":1999,"column":0},"end":{"line":1999,"column":10}},"1999":{"start":{"line":2000,"column":0},"end":{"line":2000,"column":6}},"2000":{"start":{"line":2001,"column":0},"end":{"line":2001,"column":3}},"2001":{"start":{"line":2002,"column":0},"end":{"line":2002,"column":0}},"2002":{"start":{"line":2003,"column":0},"end":{"line":2003,"column":5}},"2003":{"start":{"line":2004,"column":0},"end":{"line":2004,"column":121}},"2004":{"start":{"line":2005,"column":0},"end":{"line":2005,"column":98}},"2005":{"start":{"line":2006,"column":0},"end":{"line":2006,"column":5}},"2006":{"start":{"line":2007,"column":0},"end":{"line":2007,"column":31}},"2007":{"start":{"line":2008,"column":0},"end":{"line":2008,"column":58}},"2008":{"start":{"line":2009,"column":0},"end":{"line":2009,"column":56}},"2009":{"start":{"line":2010,"column":0},"end":{"line":2010,"column":43}},"2010":{"start":{"line":2011,"column":0},"end":{"line":2011,"column":62}},"2011":{"start":{"line":2012,"column":0},"end":{"line":2012,"column":63}},"2012":{"start":{"line":2013,"column":0},"end":{"line":2013,"column":3}},"2013":{"start":{"line":2014,"column":0},"end":{"line":2014,"column":0}},"2014":{"start":{"line":2015,"column":0},"end":{"line":2015,"column":5}},"2015":{"start":{"line":2016,"column":0},"end":{"line":2016,"column":47}},"2016":{"start":{"line":2017,"column":0},"end":{"line":2017,"column":72}},"2017":{"start":{"line":2018,"column":0},"end":{"line":2018,"column":5}},"2018":{"start":{"line":2019,"column":0},"end":{"line":2019,"column":25}},"2019":{"start":{"line":2020,"column":0},"end":{"line":2020,"column":60}},"2020":{"start":{"line":2021,"column":0},"end":{"line":2021,"column":53}},"2021":{"start":{"line":2022,"column":0},"end":{"line":2022,"column":3}},"2022":{"start":{"line":2023,"column":0},"end":{"line":2023,"column":0}},"2023":{"start":{"line":2024,"column":0},"end":{"line":2024,"column":5}},"2024":{"start":{"line":2025,"column":0},"end":{"line":2025,"column":57}},"2025":{"start":{"line":2026,"column":0},"end":{"line":2026,"column":104}},"2026":{"start":{"line":2027,"column":0},"end":{"line":2027,"column":77}},"2027":{"start":{"line":2028,"column":0},"end":{"line":2028,"column":5}},"2028":{"start":{"line":2029,"column":0},"end":{"line":2029,"column":47}},"2029":{"start":{"line":2030,"column":0},"end":{"line":2030,"column":60}},"2030":{"start":{"line":2031,"column":0},"end":{"line":2031,"column":68}},"2031":{"start":{"line":2032,"column":0},"end":{"line":2032,"column":43}},"2032":{"start":{"line":2033,"column":0},"end":{"line":2033,"column":6}},"2033":{"start":{"line":2034,"column":0},"end":{"line":2034,"column":3}},"2034":{"start":{"line":2035,"column":0},"end":{"line":2035,"column":0}},"2035":{"start":{"line":2036,"column":0},"end":{"line":2036,"column":5}},"2036":{"start":{"line":2037,"column":0},"end":{"line":2037,"column":59}},"2037":{"start":{"line":2038,"column":0},"end":{"line":2038,"column":65}},"2038":{"start":{"line":2039,"column":0},"end":{"line":2039,"column":99}},"2039":{"start":{"line":2040,"column":0},"end":{"line":2040,"column":5}},"2040":{"start":{"line":2041,"column":0},"end":{"line":2041,"column":58}},"2041":{"start":{"line":2042,"column":0},"end":{"line":2042,"column":60}},"2042":{"start":{"line":2043,"column":0},"end":{"line":2043,"column":23}},"2043":{"start":{"line":2044,"column":0},"end":{"line":2044,"column":33}},"2044":{"start":{"line":2045,"column":0},"end":{"line":2045,"column":12}},"2045":{"start":{"line":2046,"column":0},"end":{"line":2046,"column":36}},"2046":{"start":{"line":2047,"column":0},"end":{"line":2047,"column":14}},"2047":{"start":{"line":2048,"column":0},"end":{"line":2048,"column":38}},"2048":{"start":{"line":2049,"column":0},"end":{"line":2049,"column":16}},"2049":{"start":{"line":2050,"column":0},"end":{"line":2050,"column":16}},"2050":{"start":{"line":2051,"column":0},"end":{"line":2051,"column":67}},"2051":{"start":{"line":2052,"column":0},"end":{"line":2052,"column":3}},"2052":{"start":{"line":2053,"column":0},"end":{"line":2053,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":1,"285":1,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":0,"295":0,"296":0,"297":0,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":0,"346":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"353":0,"354":0,"355":0,"356":0,"357":0,"358":0,"359":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":0,"424":0,"425":0,"426":0,"427":0,"428":0,"429":0,"430":0,"431":0,"432":0,"433":0,"434":0,"435":0,"436":0,"437":0,"438":0,"439":0,"440":0,"441":0,"442":0,"443":0,"444":0,"445":0,"446":0,"447":0,"448":0,"449":0,"450":0,"451":0,"452":0,"453":0,"454":0,"455":0,"456":0,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"471":0,"472":0,"473":1,"474":1,"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1,"489":1,"490":1,"491":1,"492":1,"493":1,"494":1,"495":1,"496":1,"497":1,"498":1,"499":1,"500":1,"501":1,"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1,"516":1,"517":0,"518":0,"519":0,"520":0,"521":0,"522":0,"523":0,"524":0,"525":0,"526":0,"527":0,"528":0,"529":0,"530":0,"531":0,"532":0,"533":0,"534":0,"535":0,"536":0,"537":0,"538":0,"539":0,"540":0,"541":0,"542":0,"543":0,"544":0,"545":0,"546":0,"547":0,"548":0,"549":0,"550":0,"551":0,"552":0,"553":0,"554":0,"555":0,"556":0,"557":0,"558":0,"559":0,"560":0,"561":0,"562":0,"563":0,"564":0,"565":0,"566":0,"567":0,"568":0,"569":0,"570":0,"571":0,"572":0,"573":0,"574":0,"575":0,"576":0,"577":0,"578":0,"579":0,"580":0,"581":0,"582":0,"583":0,"584":0,"585":0,"586":0,"587":0,"588":0,"589":1,"590":1,"591":0,"592":0,"593":0,"594":0,"595":0,"596":0,"597":0,"598":0,"599":0,"600":0,"601":0,"602":1,"603":1,"604":0,"605":0,"606":0,"607":0,"608":1,"609":1,"610":0,"611":0,"612":0,"613":0,"614":1,"615":1,"616":1,"617":1,"618":1,"619":1,"620":1,"621":1,"622":0,"623":0,"624":0,"625":0,"626":0,"627":0,"628":0,"629":1,"630":1,"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":0,"639":0,"640":0,"641":0,"642":0,"643":0,"644":0,"645":0,"646":0,"647":0,"648":0,"649":0,"650":0,"651":0,"652":0,"653":0,"654":1,"655":1,"656":1,"657":1,"658":1,"659":1,"660":1,"661":1,"662":1,"663":0,"664":0,"665":0,"666":0,"667":0,"668":1,"669":1,"670":0,"671":0,"672":0,"673":0,"674":0,"675":0,"676":0,"677":1,"678":1,"679":0,"680":0,"681":1,"682":1,"683":1,"684":1,"685":1,"686":1,"687":1,"688":1,"689":1,"690":1,"691":1,"692":1,"693":1,"694":1,"695":1,"696":1,"697":1,"698":1,"699":1,"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1,"714":1,"715":1,"716":1,"717":1,"718":1,"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"729":0,"730":0,"731":0,"732":0,"733":0,"734":0,"735":0,"736":1,"737":1,"738":1,"739":1,"740":1,"741":1,"742":1,"743":1,"744":1,"745":0,"746":0,"747":0,"748":0,"749":0,"750":0,"751":0,"752":0,"753":0,"754":0,"755":0,"756":0,"757":0,"758":0,"759":0,"760":0,"761":0,"762":1,"763":1,"764":1,"765":1,"766":1,"767":1,"768":1,"769":1,"770":1,"771":0,"772":0,"773":0,"774":0,"775":0,"776":0,"777":0,"778":0,"779":0,"780":0,"781":0,"782":0,"783":0,"784":0,"785":0,"786":0,"787":0,"788":0,"789":0,"790":0,"791":0,"792":0,"793":0,"794":0,"795":1,"796":1,"797":1,"798":0,"799":0,"800":0,"801":0,"802":1,"803":1,"804":1,"805":0,"806":0,"807":1,"808":1,"809":1,"810":0,"811":0,"812":1,"813":1,"814":0,"815":0,"816":0,"817":0,"818":0,"819":0,"820":0,"821":0,"822":0,"823":0,"824":0,"825":1,"826":1,"827":0,"828":0,"829":0,"830":0,"831":0,"832":0,"833":0,"834":0,"835":0,"836":0,"837":0,"838":0,"839":0,"840":0,"841":0,"842":0,"843":0,"844":0,"845":0,"846":0,"847":0,"848":0,"849":1,"850":1,"851":0,"852":0,"853":0,"854":0,"855":0,"856":0,"857":0,"858":0,"859":0,"860":0,"861":1,"862":1,"863":0,"864":0,"865":0,"866":0,"867":0,"868":0,"869":0,"870":0,"871":0,"872":0,"873":0,"874":0,"875":0,"876":0,"877":0,"878":1,"879":1,"880":1,"881":1,"882":1,"883":1,"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"890":1,"891":1,"892":1,"893":1,"894":1,"895":1,"896":1,"897":1,"898":1,"899":1,"900":1,"901":1,"902":1,"903":1,"904":1,"905":1,"906":1,"907":1,"908":1,"909":1,"910":1,"911":1,"912":1,"913":1,"914":1,"915":1,"916":1,"917":1,"918":1,"919":1,"920":1,"921":1,"922":1,"923":1,"924":1,"925":1,"926":1,"927":0,"928":0,"929":0,"930":0,"931":0,"932":0,"933":0,"934":0,"935":0,"936":0,"937":0,"938":0,"939":0,"940":0,"941":1,"942":1,"943":1,"944":1,"945":1,"946":1,"947":1,"948":1,"949":1,"950":1,"951":1,"952":1,"953":1,"954":1,"955":1,"956":1,"957":1,"958":1,"959":1,"960":1,"961":1,"962":1,"963":1,"964":1,"965":1,"966":1,"967":1,"968":1,"969":1,"970":1,"971":1,"972":1,"973":1,"974":0,"975":0,"976":0,"977":0,"978":0,"979":0,"980":0,"981":0,"982":0,"983":0,"984":0,"985":0,"986":0,"987":0,"988":0,"989":0,"990":0,"991":0,"992":0,"993":0,"994":0,"995":0,"996":0,"997":0,"998":0,"999":0,"1000":0,"1001":1,"1002":1,"1003":1,"1004":1,"1005":1,"1006":1,"1007":1,"1008":1,"1009":1,"1010":1,"1011":1,"1012":1,"1013":1,"1014":1,"1015":1,"1016":1,"1017":1,"1018":1,"1019":1,"1020":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1026":1,"1027":1,"1028":1,"1029":1,"1030":1,"1031":1,"1032":1,"1033":1,"1034":1,"1035":1,"1036":1,"1037":1,"1038":1,"1039":1,"1040":1,"1041":1,"1042":1,"1043":1,"1044":1,"1045":1,"1046":1,"1047":0,"1048":0,"1049":0,"1050":0,"1051":0,"1052":0,"1053":0,"1054":0,"1055":0,"1056":0,"1057":1,"1058":1,"1059":1,"1060":1,"1061":1,"1062":1,"1063":1,"1064":1,"1065":1,"1066":0,"1067":0,"1068":0,"1069":0,"1070":0,"1071":0,"1072":0,"1073":0,"1074":0,"1075":0,"1076":0,"1077":0,"1078":0,"1079":0,"1080":1,"1081":1,"1082":1,"1083":1,"1084":1,"1085":1,"1086":1,"1087":1,"1088":1,"1089":1,"1090":0,"1091":0,"1092":0,"1093":0,"1094":0,"1095":0,"1096":0,"1097":0,"1098":0,"1099":0,"1100":0,"1101":0,"1102":0,"1103":0,"1104":0,"1105":0,"1106":1,"1107":1,"1108":0,"1109":0,"1110":0,"1111":0,"1112":0,"1113":0,"1114":0,"1115":0,"1116":1,"1117":1,"1118":0,"1119":0,"1120":0,"1121":0,"1122":0,"1123":0,"1124":0,"1125":0,"1126":0,"1127":0,"1128":0,"1129":0,"1130":0,"1131":0,"1132":0,"1133":0,"1134":0,"1135":0,"1136":0,"1137":0,"1138":0,"1139":0,"1140":0,"1141":0,"1142":0,"1143":0,"1144":0,"1145":0,"1146":0,"1147":0,"1148":0,"1149":0,"1150":0,"1151":0,"1152":0,"1153":1,"1154":1,"1155":0,"1156":0,"1157":0,"1158":0,"1159":0,"1160":0,"1161":0,"1162":0,"1163":0,"1164":0,"1165":0,"1166":0,"1167":0,"1168":0,"1169":0,"1170":0,"1171":1,"1172":1,"1173":0,"1174":0,"1175":0,"1176":0,"1177":0,"1178":0,"1179":0,"1180":0,"1181":0,"1182":0,"1183":0,"1184":0,"1185":0,"1186":0,"1187":0,"1188":0,"1189":0,"1190":1,"1191":1,"1192":1,"1193":1,"1194":1,"1195":1,"1196":1,"1197":1,"1198":1,"1199":1,"1200":1,"1201":1,"1202":1,"1203":1,"1204":1,"1205":1,"1206":1,"1207":1,"1208":1,"1209":1,"1210":1,"1211":1,"1212":1,"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1218":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1224":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1231":1,"1232":0,"1233":0,"1234":0,"1235":0,"1236":0,"1237":0,"1238":0,"1239":0,"1240":0,"1241":0,"1242":0,"1243":0,"1244":0,"1245":0,"1246":0,"1247":0,"1248":0,"1249":0,"1250":0,"1251":1,"1252":1,"1253":1,"1254":1,"1255":1,"1256":1,"1257":1,"1258":1,"1259":1,"1260":1,"1261":1,"1262":1,"1263":1,"1264":1,"1265":1,"1266":1,"1267":1,"1268":1,"1269":1,"1270":1,"1271":1,"1272":1,"1273":1,"1274":1,"1275":1,"1276":1,"1277":1,"1278":1,"1279":1,"1280":1,"1281":1,"1282":1,"1283":1,"1284":1,"1285":1,"1286":1,"1287":1,"1288":1,"1289":1,"1290":1,"1291":1,"1292":1,"1293":1,"1294":1,"1295":1,"1296":1,"1297":1,"1298":1,"1299":1,"1300":1,"1301":1,"1302":1,"1303":1,"1304":1,"1305":1,"1306":1,"1307":1,"1308":1,"1309":1,"1310":1,"1311":1,"1312":1,"1313":1,"1314":1,"1315":1,"1316":1,"1317":1,"1318":1,"1319":1,"1320":1,"1321":1,"1322":1,"1323":1,"1324":0,"1325":0,"1326":0,"1327":0,"1328":0,"1329":0,"1330":0,"1331":0,"1332":0,"1333":0,"1334":0,"1335":1,"1336":1,"1337":0,"1338":0,"1339":0,"1340":0,"1341":0,"1342":0,"1343":0,"1344":0,"1345":0,"1346":0,"1347":0,"1348":0,"1349":1,"1350":1,"1351":1,"1352":1,"1353":1,"1354":1,"1355":1,"1356":1,"1357":1,"1358":1,"1359":1,"1360":1,"1361":1,"1362":1,"1363":1,"1364":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1374":1,"1375":1,"1376":1,"1377":1,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1385":1,"1386":1,"1387":1,"1388":1,"1389":0,"1390":0,"1391":0,"1392":0,"1393":0,"1394":0,"1395":0,"1396":0,"1397":0,"1398":0,"1399":0,"1400":0,"1401":0,"1402":0,"1403":0,"1404":0,"1405":0,"1406":0,"1407":0,"1408":0,"1409":0,"1410":0,"1411":0,"1412":0,"1413":0,"1414":0,"1415":0,"1416":0,"1417":0,"1418":0,"1419":0,"1420":0,"1421":0,"1422":0,"1423":0,"1424":0,"1425":0,"1426":0,"1427":0,"1428":0,"1429":0,"1430":0,"1431":0,"1432":0,"1433":0,"1434":0,"1435":0,"1436":1,"1437":1,"1438":0,"1439":0,"1440":0,"1441":0,"1442":0,"1443":0,"1444":0,"1445":0,"1446":0,"1447":0,"1448":0,"1449":0,"1450":0,"1451":0,"1452":0,"1453":0,"1454":0,"1455":0,"1456":0,"1457":0,"1458":0,"1459":0,"1460":0,"1461":0,"1462":0,"1463":1,"1464":1,"1465":1,"1466":1,"1467":1,"1468":1,"1469":1,"1470":1,"1471":1,"1472":1,"1473":1,"1474":0,"1475":0,"1476":0,"1477":0,"1478":0,"1479":0,"1480":0,"1481":0,"1482":0,"1483":0,"1484":0,"1485":0,"1486":0,"1487":0,"1488":0,"1489":0,"1490":0,"1491":0,"1492":0,"1493":0,"1494":0,"1495":0,"1496":0,"1497":0,"1498":0,"1499":0,"1500":0,"1501":0,"1502":0,"1503":0,"1504":0,"1505":0,"1506":0,"1507":0,"1508":0,"1509":0,"1510":0,"1511":0,"1512":0,"1513":0,"1514":0,"1515":0,"1516":0,"1517":0,"1518":0,"1519":0,"1520":0,"1521":0,"1522":0,"1523":0,"1524":0,"1525":0,"1526":0,"1527":0,"1528":0,"1529":0,"1530":0,"1531":0,"1532":0,"1533":0,"1534":0,"1535":0,"1536":0,"1537":0,"1538":0,"1539":0,"1540":0,"1541":0,"1542":0,"1543":0,"1544":0,"1545":0,"1546":0,"1547":0,"1548":0,"1549":0,"1550":0,"1551":0,"1552":0,"1553":0,"1554":0,"1555":0,"1556":0,"1557":0,"1558":0,"1559":0,"1560":0,"1561":0,"1562":0,"1563":0,"1564":0,"1565":0,"1566":0,"1567":0,"1568":1,"1569":1,"1570":0,"1571":0,"1572":0,"1573":0,"1574":0,"1575":1,"1576":1,"1577":1,"1578":1,"1579":1,"1580":1,"1581":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1588":1,"1589":1,"1590":1,"1591":1,"1592":1,"1593":1,"1594":1,"1595":1,"1596":1,"1597":1,"1598":1,"1599":1,"1600":1,"1601":1,"1602":1,"1603":1,"1604":1,"1605":1,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1611":1,"1612":1,"1613":1,"1614":1,"1615":1,"1616":1,"1617":1,"1618":1,"1619":1,"1620":1,"1621":0,"1622":0,"1623":0,"1624":0,"1625":0,"1626":0,"1627":0,"1628":0,"1629":0,"1630":0,"1631":0,"1632":0,"1633":0,"1634":0,"1635":0,"1636":0,"1637":0,"1638":0,"1639":0,"1640":0,"1641":0,"1642":0,"1643":0,"1644":0,"1645":0,"1646":0,"1647":0,"1648":0,"1649":0,"1650":0,"1651":0,"1652":0,"1653":0,"1654":0,"1655":1,"1656":1,"1657":0,"1658":0,"1659":0,"1660":0,"1661":0,"1662":0,"1663":0,"1664":0,"1665":0,"1666":0,"1667":0,"1668":1,"1669":1,"1670":0,"1671":0,"1672":0,"1673":0,"1674":0,"1675":0,"1676":0,"1677":0,"1678":0,"1679":0,"1680":0,"1681":0,"1682":0,"1683":0,"1684":0,"1685":0,"1686":0,"1687":0,"1688":0,"1689":0,"1690":0,"1691":0,"1692":0,"1693":0,"1694":0,"1695":0,"1696":0,"1697":0,"1698":0,"1699":0,"1700":0,"1701":0,"1702":0,"1703":0,"1704":0,"1705":0,"1706":0,"1707":0,"1708":0,"1709":0,"1710":0,"1711":0,"1712":1,"1713":1,"1714":0,"1715":0,"1716":0,"1717":0,"1718":0,"1719":0,"1720":0,"1721":0,"1722":0,"1723":1,"1724":1,"1725":0,"1726":0,"1727":0,"1728":0,"1729":0,"1730":0,"1731":0,"1732":0,"1733":0,"1734":0,"1735":0,"1736":1,"1737":1,"1738":0,"1739":0,"1740":1,"1741":1,"1742":0,"1743":0,"1744":0,"1745":0,"1746":0,"1747":0,"1748":0,"1749":0,"1750":0,"1751":0,"1752":0,"1753":0,"1754":0,"1755":0,"1756":0,"1757":0,"1758":0,"1759":0,"1760":0,"1761":0,"1762":0,"1763":0,"1764":0,"1765":0,"1766":0,"1767":0,"1768":0,"1769":0,"1770":0,"1771":0,"1772":0,"1773":0,"1774":0,"1775":0,"1776":0,"1777":0,"1778":0,"1779":0,"1780":0,"1781":0,"1782":1,"1783":1,"1784":0,"1785":0,"1786":0,"1787":0,"1788":0,"1789":0,"1790":0,"1791":0,"1792":0,"1793":0,"1794":0,"1795":0,"1796":0,"1797":0,"1798":0,"1799":0,"1800":0,"1801":0,"1802":0,"1803":0,"1804":0,"1805":0,"1806":1,"1807":1,"1808":0,"1809":0,"1810":0,"1811":0,"1812":0,"1813":0,"1814":0,"1815":0,"1816":0,"1817":0,"1818":0,"1819":0,"1820":0,"1821":0,"1822":0,"1823":0,"1824":0,"1825":0,"1826":0,"1827":0,"1828":0,"1829":0,"1830":0,"1831":0,"1832":0,"1833":0,"1834":0,"1835":0,"1836":0,"1837":0,"1838":0,"1839":0,"1840":0,"1841":0,"1842":0,"1843":0,"1844":1,"1845":1,"1846":0,"1847":0,"1848":0,"1849":0,"1850":0,"1851":0,"1852":0,"1853":0,"1854":0,"1855":0,"1856":0,"1857":0,"1858":0,"1859":0,"1860":0,"1861":0,"1862":0,"1863":1,"1864":1,"1865":0,"1866":0,"1867":0,"1868":0,"1869":0,"1870":0,"1871":0,"1872":0,"1873":0,"1874":0,"1875":1,"1876":1,"1877":0,"1878":0,"1879":0,"1880":0,"1881":0,"1882":0,"1883":0,"1884":0,"1885":0,"1886":0,"1887":0,"1888":0,"1889":0,"1890":0,"1891":0,"1892":0,"1893":0,"1894":0,"1895":0,"1896":0,"1897":0,"1898":0,"1899":0,"1900":0,"1901":0,"1902":0,"1903":0,"1904":1,"1905":1,"1906":0,"1907":0,"1908":0,"1909":0,"1910":0,"1911":0,"1912":0,"1913":0,"1914":0,"1915":0,"1916":0,"1917":0,"1918":0,"1919":0,"1920":0,"1921":0,"1922":0,"1923":0,"1924":0,"1925":0,"1926":0,"1927":0,"1928":0,"1929":0,"1930":0,"1931":0,"1932":0,"1933":0,"1934":0,"1935":0,"1936":0,"1937":0,"1938":0,"1939":0,"1940":1,"1941":1,"1942":0,"1943":0,"1944":0,"1945":0,"1946":0,"1947":0,"1948":0,"1949":0,"1950":0,"1951":0,"1952":0,"1953":0,"1954":0,"1955":0,"1956":0,"1957":0,"1958":0,"1959":0,"1960":0,"1961":0,"1962":0,"1963":0,"1964":0,"1965":0,"1966":0,"1967":0,"1968":0,"1969":0,"1970":0,"1971":0,"1972":0,"1973":0,"1974":0,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":0,"1983":0,"1984":0,"1985":1,"1986":1,"1987":0,"1988":0,"1989":0,"1990":0,"1991":0,"1992":0,"1993":1,"1994":1,"1995":0,"1996":0,"1997":0,"1998":0,"1999":0,"2000":0,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":0,"2008":0,"2009":0,"2010":0,"2011":0,"2012":0,"2013":1,"2014":1,"2015":1,"2016":1,"2017":1,"2018":1,"2019":0,"2020":0,"2021":0,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2027":1,"2028":1,"2029":0,"2030":0,"2031":0,"2032":0,"2033":0,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":1,"2040":1,"2041":0,"2042":0,"2043":0,"2044":0,"2045":0,"2046":0,"2047":0,"2048":0,"2049":0,"2050":0,"2051":0,"2052":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"NexusSmartAccount","decl":{"start":{"line":124,"column":10},"end":{"line":181,"column":3}},"loc":{"start":{"line":124,"column":10},"end":{"line":181,"column":3}},"line":124},"1":{"name":"create","decl":{"start":{"line":216,"column":2},"end":{"line":284,"column":3}},"loc":{"start":{"line":216,"column":2},"end":{"line":284,"column":3}},"line":216},"2":{"name":"getAddress","decl":{"start":{"line":286,"column":2},"end":{"line":298,"column":3}},"loc":{"start":{"line":286,"column":2},"end":{"line":298,"column":3}},"line":286},"3":{"name":"getGasEstimate","decl":{"start":{"line":345,"column":2},"end":{"line":373,"column":3}},"loc":{"start":{"line":345,"column":2},"end":{"line":373,"column":3}},"line":345},"4":{"name":"getBalances","decl":{"start":{"line":423,"column":2},"end":{"line":473,"column":3}},"loc":{"start":{"line":423,"column":2},"end":{"line":473,"column":3}},"line":423},"5":{"name":"withdraw","decl":{"start":{"line":517,"column":2},"end":{"line":589,"column":3}},"loc":{"start":{"line":517,"column":2},"end":{"line":589,"column":3}},"line":517},"6":{"name":"_getAccountContract","decl":{"start":{"line":591,"column":2},"end":{"line":602,"column":3}},"loc":{"start":{"line":591,"column":2},"end":{"line":602,"column":3}},"line":591},"7":{"name":"isActiveValidationModuleDefined","decl":{"start":{"line":604,"column":2},"end":{"line":608,"column":3}},"loc":{"start":{"line":604,"column":2},"end":{"line":608,"column":3}},"line":604},"8":{"name":"isDefaultValidationModuleDefined","decl":{"start":{"line":610,"column":2},"end":{"line":614,"column":3}},"loc":{"start":{"line":610,"column":2},"end":{"line":614,"column":3}},"line":610},"9":{"name":"setActiveValidationModule","decl":{"start":{"line":622,"column":2},"end":{"line":629,"column":3}},"loc":{"start":{"line":622,"column":2},"end":{"line":629,"column":3}},"line":622},"10":{"name":"setActiveValidationModuleByAddress","decl":{"start":{"line":638,"column":2},"end":{"line":654,"column":3}},"loc":{"start":{"line":638,"column":2},"end":{"line":654,"column":3}},"line":638},"11":{"name":"setActiveExecutionModule","decl":{"start":{"line":663,"column":2},"end":{"line":668,"column":3}},"loc":{"start":{"line":663,"column":2},"end":{"line":668,"column":3}},"line":663},"12":{"name":"setDefaultValidationModule","decl":{"start":{"line":670,"column":2},"end":{"line":677,"column":3}},"loc":{"start":{"line":670,"column":2},"end":{"line":677,"column":3}},"line":670},"13":{"name":"setDeploymentState","decl":{"start":{"line":679,"column":2},"end":{"line":681,"column":3}},"loc":{"start":{"line":679,"column":2},"end":{"line":681,"column":3}},"line":679},"14":{"name":"getAccountInitCode","decl":{"start":{"line":729,"column":2},"end":{"line":736,"column":3}},"loc":{"start":{"line":729,"column":2},"end":{"line":736,"column":3}},"line":729},"15":{"name":"encodeExecute","decl":{"start":{"line":745,"column":2},"end":{"line":762,"column":3}},"loc":{"start":{"line":745,"column":2},"end":{"line":762,"column":3}},"line":745},"16":{"name":"encodeExecuteBatch","decl":{"start":{"line":771,"column":2},"end":{"line":795,"column":3}},"loc":{"start":{"line":771,"column":2},"end":{"line":795,"column":3}},"line":771},"17":{"name":"getDummySignatures","decl":{"start":{"line":798,"column":2},"end":{"line":802,"column":3}},"loc":{"start":{"line":798,"column":2},"end":{"line":802,"column":3}},"line":798},"18":{"name":"getDummySignature","decl":{"start":{"line":805,"column":2},"end":{"line":807,"column":3}},"loc":{"start":{"line":805,"column":2},"end":{"line":807,"column":3}},"line":805},"19":{"name":"getDummyPaymasterData","decl":{"start":{"line":810,"column":2},"end":{"line":812,"column":3}},"loc":{"start":{"line":810,"column":2},"end":{"line":812,"column":3}},"line":810},"20":{"name":"validateUserOp","decl":{"start":{"line":814,"column":2},"end":{"line":825,"column":3}},"loc":{"start":{"line":814,"column":2},"end":{"line":825,"column":3}},"line":814},"21":{"name":"signUserOp","decl":{"start":{"line":827,"column":2},"end":{"line":849,"column":3}},"loc":{"start":{"line":827,"column":2},"end":{"line":849,"column":3}},"line":827},"22":{"name":"getSignatureWithModuleAddress","decl":{"start":{"line":851,"column":2},"end":{"line":861,"column":3}},"loc":{"start":{"line":851,"column":2},"end":{"line":861,"column":3}},"line":851},"23":{"name":"getPaymasterFeeQuotesOrData","decl":{"start":{"line":863,"column":2},"end":{"line":878,"column":3}},"loc":{"start":{"line":863,"column":2},"end":{"line":878,"column":3}},"line":863},"24":{"name":"getTokenFees","decl":{"start":{"line":927,"column":2},"end":{"line":941,"column":3}},"loc":{"start":{"line":927,"column":2},"end":{"line":941,"column":3}},"line":927},"25":{"name":"getSupportedTokens","decl":{"start":{"line":974,"column":2},"end":{"line":1001,"column":3}},"loc":{"start":{"line":974,"column":2},"end":{"line":1001,"column":3}},"line":974},"26":{"name":"sendUserOp","decl":{"start":{"line":1047,"column":2},"end":{"line":1057,"column":3}},"loc":{"start":{"line":1047,"column":2},"end":{"line":1057,"column":3}},"line":1047},"27":{"name":"sendSignedUserOp","decl":{"start":{"line":1066,"column":2},"end":{"line":1080,"column":3}},"loc":{"start":{"line":1066,"column":2},"end":{"line":1080,"column":3}},"line":1066},"28":{"name":"packGasValues","decl":{"start":{"line":1090,"column":9},"end":{"line":1106,"column":3}},"loc":{"start":{"line":1090,"column":9},"end":{"line":1106,"column":3}},"line":1090},"29":{"name":"getUserOpHash","decl":{"start":{"line":1108,"column":2},"end":{"line":1116,"column":3}},"loc":{"start":{"line":1108,"column":2},"end":{"line":1116,"column":3}},"line":1108},"30":{"name":"estimateUserOpGas","decl":{"start":{"line":1118,"column":2},"end":{"line":1153,"column":3}},"loc":{"start":{"line":1118,"column":2},"end":{"line":1153,"column":3}},"line":1118},"31":{"name":"getNonce","decl":{"start":{"line":1155,"column":2},"end":{"line":1171,"column":3}},"loc":{"start":{"line":1155,"column":2},"end":{"line":1171,"column":3}},"line":1155},"32":{"name":"getBuildUserOpNonce","decl":{"start":{"line":1173,"column":2},"end":{"line":1190,"column":3}},"loc":{"start":{"line":1173,"column":2},"end":{"line":1190,"column":3}},"line":1173},"33":{"name":"transferOwnership","decl":{"start":{"line":1232,"column":2},"end":{"line":1251,"column":3}},"loc":{"start":{"line":1232,"column":2},"end":{"line":1251,"column":3}},"line":1232},"34":{"name":"sendTransaction","decl":{"start":{"line":1324,"column":2},"end":{"line":1335,"column":3}},"loc":{"start":{"line":1324,"column":2},"end":{"line":1335,"column":3}},"line":1324},"35":{"name":"sendTransactionWithExecutor","decl":{"start":{"line":1337,"column":2},"end":{"line":1349,"column":3}},"loc":{"start":{"line":1337,"column":2},"end":{"line":1349,"column":3}},"line":1337},"36":{"name":"buildUserOp","decl":{"start":{"line":1389,"column":2},"end":{"line":1436,"column":3}},"loc":{"start":{"line":1389,"column":2},"end":{"line":1436,"column":3}},"line":1389},"37":{"name":"validateUserOpAndPaymasterRequest","decl":{"start":{"line":1438,"column":10},"end":{"line":1463,"column":3}},"loc":{"start":{"line":1438,"column":10},"end":{"line":1463,"column":3}},"line":1438},"38":{"name":"buildTokenPaymasterUserOp","decl":{"start":{"line":1474,"column":2},"end":{"line":1568,"column":3}},"loc":{"start":{"line":1474,"column":2},"end":{"line":1568,"column":3}},"line":1474},"39":{"name":"signUserOpHash","decl":{"start":{"line":1570,"column":2},"end":{"line":1575,"column":3}},"loc":{"start":{"line":1570,"column":2},"end":{"line":1575,"column":3}},"line":1570},"40":{"name":"deploy","decl":{"start":{"line":1621,"column":2},"end":{"line":1655,"column":3}},"loc":{"start":{"line":1621,"column":2},"end":{"line":1655,"column":3}},"line":1621},"41":{"name":"getFactoryData","decl":{"start":{"line":1657,"column":2},"end":{"line":1668,"column":3}},"loc":{"start":{"line":1657,"column":2},"end":{"line":1668,"column":3}},"line":1657},"42":{"name":"signMessage","decl":{"start":{"line":1670,"column":2},"end":{"line":1712,"column":3}},"loc":{"start":{"line":1670,"column":2},"end":{"line":1712,"column":3}},"line":1670},"43":{"name":"getIsValidSignatureData","decl":{"start":{"line":1714,"column":2},"end":{"line":1723,"column":3}},"loc":{"start":{"line":1714,"column":2},"end":{"line":1723,"column":3}},"line":1714},"44":{"name":"isModuleInstalled","decl":{"start":{"line":1725,"column":2},"end":{"line":1736,"column":3}},"loc":{"start":{"line":1725,"column":2},"end":{"line":1736,"column":3}},"line":1725},"45":{"name":"getSmartAccountOwner","decl":{"start":{"line":1738,"column":2},"end":{"line":1740,"column":3}},"loc":{"start":{"line":1738,"column":2},"end":{"line":1740,"column":3}},"line":1738},"46":{"name":"installModule","decl":{"start":{"line":1742,"column":2},"end":{"line":1782,"column":3}},"loc":{"start":{"line":1742,"column":2},"end":{"line":1782,"column":3}},"line":1742},"47":{"name":"_installModule","decl":{"start":{"line":1784,"column":2},"end":{"line":1806,"column":3}},"loc":{"start":{"line":1784,"column":2},"end":{"line":1806,"column":3}},"line":1784},"48":{"name":"uninstallModule","decl":{"start":{"line":1808,"column":2},"end":{"line":1844,"column":3}},"loc":{"start":{"line":1808,"column":2},"end":{"line":1844,"column":3}},"line":1808},"49":{"name":"_getModuleIndex","decl":{"start":{"line":1846,"column":10},"end":{"line":1863,"column":3}},"loc":{"start":{"line":1846,"column":10},"end":{"line":1863,"column":3}},"line":1846},"50":{"name":"getPreviousModule","decl":{"start":{"line":1865,"column":2},"end":{"line":1875,"column":3}},"loc":{"start":{"line":1865,"column":2},"end":{"line":1875,"column":3}},"line":1865},"51":{"name":"_uninstallFallback","decl":{"start":{"line":1877,"column":2},"end":{"line":1904,"column":3}},"loc":{"start":{"line":1877,"column":2},"end":{"line":1904,"column":3}},"line":1877},"52":{"name":"_uninstallModule","decl":{"start":{"line":1906,"column":2},"end":{"line":1940,"column":3}},"loc":{"start":{"line":1906,"column":2},"end":{"line":1940,"column":3}},"line":1906},"53":{"name":"executeFromExecutor","decl":{"start":{"line":1942,"column":2},"end":{"line":1975,"column":3}},"loc":{"start":{"line":1942,"column":2},"end":{"line":1975,"column":3}},"line":1942},"54":{"name":"supportsExecutionMode","decl":{"start":{"line":1982,"column":2},"end":{"line":1985,"column":3}},"loc":{"start":{"line":1982,"column":2},"end":{"line":1985,"column":3}},"line":1982},"55":{"name":"getInstalledValidators","decl":{"start":{"line":1987,"column":2},"end":{"line":1993,"column":3}},"loc":{"start":{"line":1987,"column":2},"end":{"line":1993,"column":3}},"line":1987},"56":{"name":"getInstalledExecutors","decl":{"start":{"line":1995,"column":2},"end":{"line":2001,"column":3}},"loc":{"start":{"line":1995,"column":2},"end":{"line":2001,"column":3}},"line":1995},"57":{"name":"getInstalledModules","decl":{"start":{"line":2007,"column":2},"end":{"line":2013,"column":3}},"loc":{"start":{"line":2007,"column":2},"end":{"line":2013,"column":3}},"line":2007},"58":{"name":"getActiveHook","decl":{"start":{"line":2019,"column":2},"end":{"line":2022,"column":3}},"loc":{"start":{"line":2019,"column":2},"end":{"line":2022,"column":3}},"line":2019},"59":{"name":"getFallbackBySelector","decl":{"start":{"line":2029,"column":2},"end":{"line":2034,"column":3}},"loc":{"start":{"line":2029,"column":2},"end":{"line":2034,"column":3}},"line":2029},"60":{"name":"supportsModule","decl":{"start":{"line":2041,"column":2},"end":{"line":2052,"column":3}},"loc":{"start":{"line":2041,"column":2},"end":{"line":2052,"column":3}},"line":2041}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/index.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":58}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":63}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":38}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":32}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":42}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":42}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":64}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":55}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/signers/local-account.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/signers/local-account.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":12}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":6}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":20}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":18}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":12}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":21}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":13}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":70}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":59}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":32}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":56}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":34}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":1}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":10}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":20}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":25}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":50}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":3}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":80}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":11}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":8}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":46}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":34}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":68}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":40}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":4}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":57}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":22}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":43}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":67}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":29}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":78}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":41}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":41}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":35}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":12}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":44}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":43}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":41}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":0,"21":0,"22":0,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":0,"45":0,"46":0,"47":1,"48":1,"49":0,"50":0,"51":0,"52":0,"53":0,"54":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"LocalAccountSigner","decl":{"start":{"line":20,"column":2},"end":{"line":23,"column":3}},"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":3}},"line":20},"1":{"name":"mnemonicToAccountSigner","decl":{"start":{"line":44,"column":9},"end":{"line":47,"column":3}},"loc":{"start":{"line":44,"column":9},"end":{"line":47,"column":3}},"line":44},"2":{"name":"privateKeyToAccountSigner","decl":{"start":{"line":49,"column":9},"end":{"line":54,"column":3}},"loc":{"start":{"line":49,"column":9},"end":{"line":54,"column":3}},"line":49}},"f":{"0":0,"1":0,"2":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/signers/wallet-client.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/signers/wallet-client.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":11}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":23}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":17}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":27}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":20}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":12}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":59}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":77}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":21}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":57}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":23}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":22}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":62}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":5}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":32}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":3}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":58}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":53}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":35}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":78}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":24}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":69}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":57}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":5}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":25}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":68}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":40}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":4}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":60}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":22}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":67}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":37}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":14}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":18}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":6}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"WalletClientSigner","decl":{"start":{"line":15,"column":2},"end":{"line":21,"column":3}},"loc":{"start":{"line":15,"column":2},"end":{"line":21,"column":3}},"line":15}},"f":{"0":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Constants.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Constants.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":49}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":72}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":26}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":70}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":39}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":46}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":46}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":79}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":34}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":196}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":39}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":46}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":32}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":23}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":32}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":28}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":1}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":31}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":60}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":55}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":40}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":58}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":57}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":15}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":89}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":54}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":37}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":40}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":41}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":84}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":18}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":79}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":26}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":95}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":69}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":27}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":79}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":1}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":38}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":46}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":26}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":73}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":91}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":77}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":87}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":70}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":53}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":1}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":34}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":47}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":46}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":48}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":44}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":49}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":51}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":45}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":88}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":53}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":36}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":46}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":44}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":47}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":54}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":65}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":1}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":40}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":46}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":34}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":50}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/EthersSigner.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/EthersSigner.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":48}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":72}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":48}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":34}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":1}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":23}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":10}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":45}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":22}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":32}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":3}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":22}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":49}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":62}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":74}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":60}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":51}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":62}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":45}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":71}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":49}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":30}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":74}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":52}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":49}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":64}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":5}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":27}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":1}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":27}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":1,"41":1},"branchMap":{"0":{"type":"branch","line":6,"loc":{"start":{"line":6,"column":0},"end":{"line":40,"column":1}},"locations":[{"start":{"line":6,"column":0},"end":{"line":40,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"","decl":{"start":{"line":6,"column":0},"end":{"line":40,"column":1}},"loc":{"start":{"line":6,"column":0},"end":{"line":40,"column":1}},"line":6}},"f":{"0":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Helpers.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Helpers.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":23}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":23}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":34}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":1}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":43}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":7}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":17}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":30}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":57}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":5}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":16}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":3}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":1}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":35}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":29}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":19}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":17}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":24}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":26}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":25}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":51}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":65}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":23}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":15}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":5,"8":5,"9":5,"10":5,"11":5,"12":5,"13":0,"14":0,"15":5,"16":1,"17":1,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0},"branchMap":{"0":{"type":"branch","line":7,"loc":{"start":{"line":7,"column":27},"end":{"line":16,"column":1}},"locations":[{"start":{"line":7,"column":27},"end":{"line":16,"column":1}}]},"1":{"type":"branch","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":15,"column":3}},"locations":[{"start":{"line":13,"column":2},"end":{"line":15,"column":3}}]},"2":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":6},"end":{"line":11,"column":57}},"locations":[{"start":{"line":11,"column":6},"end":{"line":11,"column":57}}]},"3":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":33},"end":{"line":11,"column":45}},"locations":[{"start":{"line":11,"column":33},"end":{"line":11,"column":45}}]}},"b":{"0":[5],"1":[0],"2":[15],"3":[0]},"fnMap":{"0":{"name":"isDebugging","decl":{"start":{"line":7,"column":27},"end":{"line":16,"column":1}},"loc":{"start":{"line":7,"column":27},"end":{"line":16,"column":1}},"line":7},"1":{"name":"pollFunction","decl":{"start":{"line":18,"column":28},"end":{"line":30,"column":1}},"loc":{"start":{"line":18,"column":28},"end":{"line":30,"column":1}},"line":18}},"f":{"0":5,"1":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/HttpRequests.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/HttpRequests.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":36}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":41}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":0}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":14}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":16}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":19}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":13}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":20}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":62}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":1}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":37}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":37}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":18}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":15}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":46}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":70}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":37}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":11}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":14}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":33}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":40}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":6}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":25}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":4}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":62}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":23}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":7}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":40}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":55}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":19}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":23}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":75}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":5}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":3}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":20}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":28}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":27}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":27}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":67}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":5}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":3}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":29}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":74}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":25}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":70}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":26}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":71}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":28}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":73}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":29}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":74}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":36}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":27}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":34}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":22}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":13}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":5}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":30}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":75}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":71}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0},"branchMap":{"0":{"type":"branch","line":5,"loc":{"start":{"line":5,"column":7},"end":{"line":5,"column":24}},"locations":[{"start":{"line":5,"column":7},"end":{"line":5,"column":24}}]}},"b":{"0":[5]},"fnMap":{"0":{"name":"sendRequest","decl":{"start":{"line":18,"column":0},"end":{"line":80,"column":1}},"loc":{"start":{"line":18,"column":0},"end":{"line":80,"column":1}},"line":18}},"f":{"0":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Logger.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Logger.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":3}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":47}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":2}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":3}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":39}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":64}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":14}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":49}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":41}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":5}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":65}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":85}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":64}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":64}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":64}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":62}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":54}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":46}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":81}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":25}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":63}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":5}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":62}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":55}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":46}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":102}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":25}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":65}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":3}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":62}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":56}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":46}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":104}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":25}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":67}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":5}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":3}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":1}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":17}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":5,"12":5,"13":5,"14":5,"15":5,"16":5,"17":5,"18":5,"19":5,"20":5,"21":5,"22":5,"23":5,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":5,"32":5,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":5,"41":5,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":5,"50":1,"51":1},"branchMap":{"0":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":13},"end":{"line":50,"column":1}},"locations":[{"start":{"line":11,"column":13},"end":{"line":50,"column":1}}]}},"b":{"0":[5]},"fnMap":{"0":{"name":"","decl":{"start":{"line":11,"column":13},"end":{"line":50,"column":1}},"loc":{"start":{"line":11,"column":13},"end":{"line":50,"column":1}},"line":11},"1":{"name":"log","decl":{"start":{"line":24,"column":9},"end":{"line":31,"column":3}},"loc":{"start":{"line":24,"column":9},"end":{"line":31,"column":3}},"line":24},"2":{"name":"warn","decl":{"start":{"line":33,"column":9},"end":{"line":40,"column":3}},"loc":{"start":{"line":33,"column":9},"end":{"line":40,"column":3}},"line":33},"3":{"name":"error","decl":{"start":{"line":42,"column":9},"end":{"line":49,"column":3}},"loc":{"start":{"line":42,"column":9},"end":{"line":49,"column":3}},"line":42}},"f":{"0":5,"1":0,"2":0,"3":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Types.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":10}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":8}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":7}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":6}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":20}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":15}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":26}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":18}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":12}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":13}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":45}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":59}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":83}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":13}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":21}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":13}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":20}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":19}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":25}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":24}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":77}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":56}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":54}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":65}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":63}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":34}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":54}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":28}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":61}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":20}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":33}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":44}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":17}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":44}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":17}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":42}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":16}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":41}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":18}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":61}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":25}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":1}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":36}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":33}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":14}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":89}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":17}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":143}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":17}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":1}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":31}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":34}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":15}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":51}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":19}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":60}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":23}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":40}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":18}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":52}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":21}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":45}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":20}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":38}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":17}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":1}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":38}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":72}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":16}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":47}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":25}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":68}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":28}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":81}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":25}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":40}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":35}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":48}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":24}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":1}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":45}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":44}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":29}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":146}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":14}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":139}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":23}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":83}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":29}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":1}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":72}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":4}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":24}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":3}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":3}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":76}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":9}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":56}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":3}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":21}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":22}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":4}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":26}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":1}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":36}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":19}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":1}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":59}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":3}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":49}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":27}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":4}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":38}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":1}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":0}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":39}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":62}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":47}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":136}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":46}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":73}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":28}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":15}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":16}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":1}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":0}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":38}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":21}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":25}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":24}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":1}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":0}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":48}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":35}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":14}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":103}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":22}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":28}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":26}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":170}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":21}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":111}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":29}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":79}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":30}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":15}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":17}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":78}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":23}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":83}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":34}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":106}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":47}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":133}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":41}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":98}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":26}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":58}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":16}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":44}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":26}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":1}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":72}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":26}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":27}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":28}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":0}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":53}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":36}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":28}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":26}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":29}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":26}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":0}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":3}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":52}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":30}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":171}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":100}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":78}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":94}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":124}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":157}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":78}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":177}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":3}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":34}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":26}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":21}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":29}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":31}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":50}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":33}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":37}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":30}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":34}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":23}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":23}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":1}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":0}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":28}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":43}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":19}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":54}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":69}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":60}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":24}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":1}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":0}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":70}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":0}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":3}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":75}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":11}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":152}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":15}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":43}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":47}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":10}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":3}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":3}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":81}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":24}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":116}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":135}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":121}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":132}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":158}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":3}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":28}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":32}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":40}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":38}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":32}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":40}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":1}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":0}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":33}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":23}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":24}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":1}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":0}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":65}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":24}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":35}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":23}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":68}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":32}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":37}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":27}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":53}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":64}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":37}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":34}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":39}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":39}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":28}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":24}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":32}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":108}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":17}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":26}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":25}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":85}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":31}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":3}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":0}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":32}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":23}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":1}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":0}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":39}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":38}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":33}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":40}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":89}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":48}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":1}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":0}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":46}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":52}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":16}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":47}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":14}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":49}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":22}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":59}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":25}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":73}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":29}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":90}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":37}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":52}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":22}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":1}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":0}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":42}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":16}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":41}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":133}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":41}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":98}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":26}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":1}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":0}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":45}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":17}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":15}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":20}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":22}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":26}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":1}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":0}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":32}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":57}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":21}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":65}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":21}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":73}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":31}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":57}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":24}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":51}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":24}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":53}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":31}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":1}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":0}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":44}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":3}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":32}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":16}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":4}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":18}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":1}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":27}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":12}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":15}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":0}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":34}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":20}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":60}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":31}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":0}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":36}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":98}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":15}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":1}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":63}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":29}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":22}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":16}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":10}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":15}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":21}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":45}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":0}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":30}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":31}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":60}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":1}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":0}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":32}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":18}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":20}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":18}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":17}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":18}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":22}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":3}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":1}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":0}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":48}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":49}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":0}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":29}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":39}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":37}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":35}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":17}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":15}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":19}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":19}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":15}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":22}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":30}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":28}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":22}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":30}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":21}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":40}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":34}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":21}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":16}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":21}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":26}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":1}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":32}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":0}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":28}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":3}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":50}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":2}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":126}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":2}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":72}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":49}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":2}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":53}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":39}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":42}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":3}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":0}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":60}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":50}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":20}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":14}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":0}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":36}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":0}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":57}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":0}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":18}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":68}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":40}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":4}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":57}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":19}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":1}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":31}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":0}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":31}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":35}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":5}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":34}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":21}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":41}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":15}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":73}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":20}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":5}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":7}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":34}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":0}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":36}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":78}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":39}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":0}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":77}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":0}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":43}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":45}},"466":{"start":{"line":467,"column":0},"end":{"line":467,"column":37}},"467":{"start":{"line":468,"column":0},"end":{"line":468,"column":16}},"468":{"start":{"line":469,"column":0},"end":{"line":469,"column":53}},"469":{"start":{"line":470,"column":0},"end":{"line":470,"column":23}},"470":{"start":{"line":471,"column":0},"end":{"line":471,"column":60}},"471":{"start":{"line":472,"column":0},"end":{"line":472,"column":26}},"472":{"start":{"line":473,"column":0},"end":{"line":473,"column":53}},"473":{"start":{"line":474,"column":0},"end":{"line":474,"column":28}},"474":{"start":{"line":475,"column":0},"end":{"line":475,"column":3}},"475":{"start":{"line":476,"column":0},"end":{"line":476,"column":0}},"476":{"start":{"line":477,"column":0},"end":{"line":477,"column":39}},"477":{"start":{"line":478,"column":0},"end":{"line":478,"column":57}},"478":{"start":{"line":479,"column":0},"end":{"line":479,"column":3}},"479":{"start":{"line":480,"column":0},"end":{"line":480,"column":5}},"480":{"start":{"line":481,"column":0},"end":{"line":481,"column":56}},"481":{"start":{"line":482,"column":0},"end":{"line":482,"column":5}},"482":{"start":{"line":483,"column":0},"end":{"line":483,"column":28}},"483":{"start":{"line":484,"column":0},"end":{"line":484,"column":0}},"484":{"start":{"line":485,"column":0},"end":{"line":485,"column":5}},"485":{"start":{"line":486,"column":0},"end":{"line":486,"column":43}},"486":{"start":{"line":487,"column":0},"end":{"line":487,"column":5}},"487":{"start":{"line":488,"column":0},"end":{"line":488,"column":29}},"488":{"start":{"line":489,"column":0},"end":{"line":489,"column":0}},"489":{"start":{"line":490,"column":0},"end":{"line":490,"column":5}},"490":{"start":{"line":491,"column":0},"end":{"line":491,"column":115}},"491":{"start":{"line":492,"column":0},"end":{"line":492,"column":46}},"492":{"start":{"line":493,"column":0},"end":{"line":493,"column":4}},"493":{"start":{"line":494,"column":0},"end":{"line":494,"column":90}},"494":{"start":{"line":495,"column":0},"end":{"line":495,"column":5}},"495":{"start":{"line":496,"column":0},"end":{"line":496,"column":26}},"496":{"start":{"line":497,"column":0},"end":{"line":497,"column":0}},"497":{"start":{"line":498,"column":0},"end":{"line":498,"column":5}},"498":{"start":{"line":499,"column":0},"end":{"line":499,"column":54}},"499":{"start":{"line":500,"column":0},"end":{"line":500,"column":4}},"500":{"start":{"line":501,"column":0},"end":{"line":501,"column":56}},"501":{"start":{"line":502,"column":0},"end":{"line":502,"column":65}},"502":{"start":{"line":503,"column":0},"end":{"line":503,"column":49}},"503":{"start":{"line":504,"column":0},"end":{"line":504,"column":5}},"504":{"start":{"line":505,"column":0},"end":{"line":505,"column":77}},"505":{"start":{"line":506,"column":0},"end":{"line":506,"column":0}},"506":{"start":{"line":507,"column":0},"end":{"line":507,"column":5}},"507":{"start":{"line":508,"column":0},"end":{"line":508,"column":77}},"508":{"start":{"line":509,"column":0},"end":{"line":509,"column":45}},"509":{"start":{"line":510,"column":0},"end":{"line":510,"column":97}},"510":{"start":{"line":511,"column":0},"end":{"line":511,"column":54}},"511":{"start":{"line":512,"column":0},"end":{"line":512,"column":5}},"512":{"start":{"line":513,"column":0},"end":{"line":513,"column":67}},"513":{"start":{"line":514,"column":0},"end":{"line":514,"column":0}},"514":{"start":{"line":515,"column":0},"end":{"line":515,"column":5}},"515":{"start":{"line":516,"column":0},"end":{"line":516,"column":38}},"516":{"start":{"line":517,"column":0},"end":{"line":517,"column":5}},"517":{"start":{"line":518,"column":0},"end":{"line":518,"column":11}},"518":{"start":{"line":519,"column":0},"end":{"line":519,"column":71}},"519":{"start":{"line":520,"column":0},"end":{"line":520,"column":20}},"520":{"start":{"line":521,"column":0},"end":{"line":521,"column":0}},"521":{"start":{"line":522,"column":0},"end":{"line":522,"column":5}},"522":{"start":{"line":523,"column":0},"end":{"line":523,"column":73}},"523":{"start":{"line":524,"column":0},"end":{"line":524,"column":87}},"524":{"start":{"line":525,"column":0},"end":{"line":525,"column":4}},"525":{"start":{"line":526,"column":0},"end":{"line":526,"column":59}},"526":{"start":{"line":527,"column":0},"end":{"line":527,"column":48}},"527":{"start":{"line":528,"column":0},"end":{"line":528,"column":5}},"528":{"start":{"line":529,"column":0},"end":{"line":529,"column":52}},"529":{"start":{"line":530,"column":0},"end":{"line":530,"column":0}},"530":{"start":{"line":531,"column":0},"end":{"line":531,"column":5}},"531":{"start":{"line":532,"column":0},"end":{"line":532,"column":43}},"532":{"start":{"line":533,"column":0},"end":{"line":533,"column":4}},"533":{"start":{"line":534,"column":0},"end":{"line":534,"column":37}},"534":{"start":{"line":535,"column":0},"end":{"line":535,"column":42}},"535":{"start":{"line":536,"column":0},"end":{"line":536,"column":5}},"536":{"start":{"line":537,"column":0},"end":{"line":537,"column":59}},"537":{"start":{"line":538,"column":0},"end":{"line":538,"column":0}},"538":{"start":{"line":539,"column":0},"end":{"line":539,"column":5}},"539":{"start":{"line":540,"column":0},"end":{"line":540,"column":45}},"540":{"start":{"line":541,"column":0},"end":{"line":541,"column":4}},"541":{"start":{"line":542,"column":0},"end":{"line":542,"column":48}},"542":{"start":{"line":543,"column":0},"end":{"line":543,"column":52}},"543":{"start":{"line":544,"column":0},"end":{"line":544,"column":5}},"544":{"start":{"line":545,"column":0},"end":{"line":545,"column":59}},"545":{"start":{"line":546,"column":0},"end":{"line":546,"column":0}},"546":{"start":{"line":547,"column":0},"end":{"line":547,"column":5}},"547":{"start":{"line":548,"column":0},"end":{"line":548,"column":93}},"548":{"start":{"line":549,"column":0},"end":{"line":549,"column":4}},"549":{"start":{"line":550,"column":0},"end":{"line":550,"column":37}},"550":{"start":{"line":551,"column":0},"end":{"line":551,"column":50}},"551":{"start":{"line":552,"column":0},"end":{"line":552,"column":5}},"552":{"start":{"line":553,"column":0},"end":{"line":553,"column":67}},"553":{"start":{"line":554,"column":0},"end":{"line":554,"column":0}},"554":{"start":{"line":555,"column":0},"end":{"line":555,"column":5}},"555":{"start":{"line":556,"column":0},"end":{"line":556,"column":101}},"556":{"start":{"line":557,"column":0},"end":{"line":557,"column":4}},"557":{"start":{"line":558,"column":0},"end":{"line":558,"column":48}},"558":{"start":{"line":559,"column":0},"end":{"line":559,"column":77}},"559":{"start":{"line":560,"column":0},"end":{"line":560,"column":5}},"560":{"start":{"line":561,"column":0},"end":{"line":561,"column":67}},"561":{"start":{"line":562,"column":0},"end":{"line":562,"column":0}},"562":{"start":{"line":563,"column":0},"end":{"line":563,"column":5}},"563":{"start":{"line":564,"column":0},"end":{"line":564,"column":40}},"564":{"start":{"line":565,"column":0},"end":{"line":565,"column":5}},"565":{"start":{"line":566,"column":0},"end":{"line":566,"column":32}},"566":{"start":{"line":567,"column":0},"end":{"line":567,"column":0}},"567":{"start":{"line":568,"column":0},"end":{"line":568,"column":5}},"568":{"start":{"line":569,"column":0},"end":{"line":569,"column":79}},"569":{"start":{"line":570,"column":0},"end":{"line":570,"column":38}},"570":{"start":{"line":571,"column":0},"end":{"line":571,"column":4}},"571":{"start":{"line":572,"column":0},"end":{"line":572,"column":79}},"572":{"start":{"line":573,"column":0},"end":{"line":573,"column":59}},"573":{"start":{"line":574,"column":0},"end":{"line":574,"column":5}},"574":{"start":{"line":575,"column":0},"end":{"line":575,"column":22}},"575":{"start":{"line":576,"column":0},"end":{"line":576,"column":0}},"576":{"start":{"line":577,"column":0},"end":{"line":577,"column":5}},"577":{"start":{"line":578,"column":0},"end":{"line":578,"column":71}},"578":{"start":{"line":579,"column":0},"end":{"line":579,"column":5}},"579":{"start":{"line":580,"column":0},"end":{"line":580,"column":30}},"580":{"start":{"line":581,"column":0},"end":{"line":581,"column":0}},"581":{"start":{"line":582,"column":0},"end":{"line":582,"column":5}},"582":{"start":{"line":583,"column":0},"end":{"line":583,"column":75}},"583":{"start":{"line":584,"column":0},"end":{"line":584,"column":5}},"584":{"start":{"line":585,"column":0},"end":{"line":585,"column":33}},"585":{"start":{"line":586,"column":0},"end":{"line":586,"column":0}},"586":{"start":{"line":587,"column":0},"end":{"line":587,"column":5}},"587":{"start":{"line":588,"column":0},"end":{"line":588,"column":83}},"588":{"start":{"line":589,"column":0},"end":{"line":589,"column":29}},"589":{"start":{"line":590,"column":0},"end":{"line":590,"column":4}},"590":{"start":{"line":591,"column":0},"end":{"line":591,"column":86}},"591":{"start":{"line":592,"column":0},"end":{"line":592,"column":4}},"592":{"start":{"line":593,"column":0},"end":{"line":593,"column":13}},"593":{"start":{"line":594,"column":0},"end":{"line":594,"column":10}},"594":{"start":{"line":595,"column":0},"end":{"line":595,"column":78}},"595":{"start":{"line":596,"column":0},"end":{"line":596,"column":44}},"596":{"start":{"line":597,"column":0},"end":{"line":597,"column":46}},"597":{"start":{"line":598,"column":0},"end":{"line":598,"column":45}},"598":{"start":{"line":599,"column":0},"end":{"line":599,"column":33}},"599":{"start":{"line":600,"column":0},"end":{"line":600,"column":22}},"600":{"start":{"line":601,"column":0},"end":{"line":601,"column":11}},"601":{"start":{"line":602,"column":0},"end":{"line":602,"column":7}},"602":{"start":{"line":603,"column":0},"end":{"line":603,"column":9}},"603":{"start":{"line":604,"column":0},"end":{"line":604,"column":4}},"604":{"start":{"line":605,"column":0},"end":{"line":605,"column":41}},"605":{"start":{"line":606,"column":0},"end":{"line":606,"column":8}},"606":{"start":{"line":607,"column":0},"end":{"line":607,"column":4}},"607":{"start":{"line":608,"column":0},"end":{"line":608,"column":108}},"608":{"start":{"line":609,"column":0},"end":{"line":609,"column":31}},"609":{"start":{"line":610,"column":0},"end":{"line":610,"column":61}},"610":{"start":{"line":611,"column":0},"end":{"line":611,"column":5}},"611":{"start":{"line":612,"column":0},"end":{"line":612,"column":54}},"612":{"start":{"line":613,"column":0},"end":{"line":613,"column":0}},"613":{"start":{"line":614,"column":0},"end":{"line":614,"column":27}},"614":{"start":{"line":615,"column":0},"end":{"line":615,"column":34}},"615":{"start":{"line":616,"column":0},"end":{"line":616,"column":26}},"616":{"start":{"line":617,"column":0},"end":{"line":617,"column":19}},"617":{"start":{"line":618,"column":0},"end":{"line":618,"column":1}},"618":{"start":{"line":619,"column":0},"end":{"line":619,"column":0}},"619":{"start":{"line":620,"column":0},"end":{"line":620,"column":47}},"620":{"start":{"line":621,"column":0},"end":{"line":621,"column":48}},"621":{"start":{"line":622,"column":0},"end":{"line":622,"column":48}},"622":{"start":{"line":623,"column":0},"end":{"line":623,"column":0}},"623":{"start":{"line":624,"column":0},"end":{"line":624,"column":32}},"624":{"start":{"line":625,"column":0},"end":{"line":625,"column":24}},"625":{"start":{"line":626,"column":0},"end":{"line":626,"column":24}},"626":{"start":{"line":627,"column":0},"end":{"line":627,"column":22}},"627":{"start":{"line":628,"column":0},"end":{"line":628,"column":12}},"628":{"start":{"line":629,"column":0},"end":{"line":629,"column":1}},"629":{"start":{"line":630,"column":0},"end":{"line":630,"column":0}},"630":{"start":{"line":631,"column":0},"end":{"line":631,"column":34}},"631":{"start":{"line":632,"column":0},"end":{"line":632,"column":6}},"632":{"start":{"line":633,"column":0},"end":{"line":633,"column":9}},"633":{"start":{"line":634,"column":0},"end":{"line":634,"column":9}},"634":{"start":{"line":635,"column":0},"end":{"line":635,"column":9}},"635":{"start":{"line":636,"column":0},"end":{"line":636,"column":10}},"636":{"start":{"line":637,"column":0},"end":{"line":637,"column":6}},"637":{"start":{"line":638,"column":0},"end":{"line":638,"column":10}},"638":{"start":{"line":639,"column":0},"end":{"line":639,"column":1}},"639":{"start":{"line":640,"column":0},"end":{"line":640,"column":0}},"640":{"start":{"line":641,"column":0},"end":{"line":641,"column":22}},"641":{"start":{"line":642,"column":0},"end":{"line":642,"column":27}},"642":{"start":{"line":643,"column":0},"end":{"line":643,"column":26}},"643":{"start":{"line":644,"column":0},"end":{"line":644,"column":27}},"644":{"start":{"line":645,"column":0},"end":{"line":645,"column":32}},"645":{"start":{"line":646,"column":0},"end":{"line":646,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":1,"357":1,"358":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":1,"365":1,"366":1,"367":1,"368":1,"369":1,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"425":1,"426":1,"427":1,"428":1,"429":1,"430":1,"431":1,"432":1,"433":1,"434":1,"435":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1,"443":1,"444":1,"445":1,"446":1,"447":1,"448":1,"449":1,"450":1,"451":1,"452":1,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1,"461":1,"462":1,"463":1,"464":1,"465":1,"466":1,"467":1,"468":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1,"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1,"489":1,"490":1,"491":1,"492":1,"493":1,"494":1,"495":1,"496":1,"497":1,"498":1,"499":1,"500":1,"501":1,"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1,"516":1,"517":1,"518":1,"519":1,"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1,"528":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"536":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"544":1,"545":1,"546":1,"547":1,"548":1,"549":1,"550":1,"551":1,"552":1,"553":1,"554":1,"555":1,"556":1,"557":1,"558":1,"559":1,"560":1,"561":1,"562":1,"563":1,"564":1,"565":1,"566":1,"567":1,"568":1,"569":1,"570":1,"571":1,"572":1,"573":1,"574":1,"575":1,"576":1,"577":1,"578":1,"579":1,"580":1,"581":1,"582":1,"583":1,"584":1,"585":1,"586":1,"587":1,"588":1,"589":1,"590":1,"591":1,"592":1,"593":1,"594":1,"595":1,"596":1,"597":1,"598":1,"599":1,"600":1,"601":1,"602":1,"603":1,"604":1,"605":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"615":1,"616":1,"617":1,"618":1,"619":1,"620":1,"621":1,"622":1,"623":1,"624":1,"625":1,"626":1,"627":1,"628":1,"629":1,"630":1,"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":1,"639":1,"640":1,"641":1,"642":1,"643":1,"644":1,"645":1},"branchMap":{"0":{"type":"branch","line":641,"loc":{"start":{"line":641,"column":7},"end":{"line":641,"column":22}},"locations":[{"start":{"line":641,"column":7},"end":{"line":641,"column":22}}]}},"b":{"0":[5]},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Utils.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Utils.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":12}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":11}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":9}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":22}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":13}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":12}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":6}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":21}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":16}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":10}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":7}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":13}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":56}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":8}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":28}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":30}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":22}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":74}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":3}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":25}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":12}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":84}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":92}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":3}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":27}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":45}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":11}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":35}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":54}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":66}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":12}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":3}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":66}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":43}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":27}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":16}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":34}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":80}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":20}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":13}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":74}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":20}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":13}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":45}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":10}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":12}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":29}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":5}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":26}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":26}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":26}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":26}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":26}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":26}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":26}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":25}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":6}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":5}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":38}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":32}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":21}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":21}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":14}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":62}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":18}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":11}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":66}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":9}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":45}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":14}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":62}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":18}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":11}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":66}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":9}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":28}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":5}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":3}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":1}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":60}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":70}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":46}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":1}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":56}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":52}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":24}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":1}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":65}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":52}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":34}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":25}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":22}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":17}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":1}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":0}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":39}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":17}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":18}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":11}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":33}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":75}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":12}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":17}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":68}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":33}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":18}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":6}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":17}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":70}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":21}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":22}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":15}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":7}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":72}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":4}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":1}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":70}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":42}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":1}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":73}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":49}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":19}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":45}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":74}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":5}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":0}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":27}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":39}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":0}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":17}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":3}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":10}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":1}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":0}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":39}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":24}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":52}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":21}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":39}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":44}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":3}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":43}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":10}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":80}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":5}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":3}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":47}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":49}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":22}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":3}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":0}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":31}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":24}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":70}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":7}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":37}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":34}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":35}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":7}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":5}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":3}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":0}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":36}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":15}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":12}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":17}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":16}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":3}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":0}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":39}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":1}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":0}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":31}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":18}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":15}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":18}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":28}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":11}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":37}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":24}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":7}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":28}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":28}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":28}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":27}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":8}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":7}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":18}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":24}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":80}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":11}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":10}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":39}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":42}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":25}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":7}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":5}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":3}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":0}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":19}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":12}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":32}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":35}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":28}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":6}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":3}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":1,"85":1,"86":1,"87":0,"88":0,"89":1,"90":1,"91":0,"92":0,"93":0,"94":1,"95":1,"96":0,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":1,"126":1,"127":0,"128":0,"129":1,"130":1,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":1,"145":1,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":1,"184":1,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"packUserOp","decl":{"start":{"line":28,"column":7},"end":{"line":84,"column":1}},"loc":{"start":{"line":28,"column":7},"end":{"line":84,"column":1}},"line":28},"1":{"name":"isNullOrUndefined","decl":{"start":{"line":87,"column":33},"end":{"line":89,"column":1}},"loc":{"start":{"line":87,"column":33},"end":{"line":89,"column":1}},"line":87},"2":{"name":"isValidRpcUrl","decl":{"start":{"line":91,"column":29},"end":{"line":94,"column":1}},"loc":{"start":{"line":91,"column":29},"end":{"line":94,"column":1}},"line":91},"3":{"name":"addressEquals","decl":{"start":{"line":96,"column":29},"end":{"line":97,"column":52}},"loc":{"start":{"line":96,"column":29},"end":{"line":97,"column":52}},"line":96},"4":{"name":"wrapSignatureWith6492","decl":{"start":{"line":105,"column":37},"end":{"line":125,"column":1}},"loc":{"start":{"line":105,"column":37},"end":{"line":125,"column":1}},"line":105},"5":{"name":"percentage","decl":{"start":{"line":127,"column":7},"end":{"line":129,"column":1}},"loc":{"start":{"line":127,"column":7},"end":{"line":129,"column":1}},"line":127},"6":{"name":"convertToFactor","decl":{"start":{"line":131,"column":7},"end":{"line":144,"column":1}},"loc":{"start":{"line":131,"column":7},"end":{"line":144,"column":1}},"line":131},"7":{"name":"makeInstallDataAndHash","decl":{"start":{"line":146,"column":7},"end":{"line":183,"column":1}},"loc":{"start":{"line":146,"column":7},"end":{"line":183,"column":1}},"line":146},"8":{"name":"_hashTypedData","decl":{"start":{"line":185,"column":7},"end":{"line":219,"column":1}},"loc":{"start":{"line":185,"column":7},"end":{"line":219,"column":1}},"line":185}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/convertSigner.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/convertSigner.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":7}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":25}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":20}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":13}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":66}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":80}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":48}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":1}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":29}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":32}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":55}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":31}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":25}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":27}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":58}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":68}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":50}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":25}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":25}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":33}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":64}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":1}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":36}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":26}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":17}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":35}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":52}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":33}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":33}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":43}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":66}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":35}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":77}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":7}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":77}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":75}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":40}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":49}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":34}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":74}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":7}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":82}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":79}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":45}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":66}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":47}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":45}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":31}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":8}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":79}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":12}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":43}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":5}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":10}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":64}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":61}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":10}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":38}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":1,"20":1,"21":0,"22":0,"23":0,"24":0,"25":1,"26":0,"27":0,"28":0,"29":1,"30":0,"31":0,"32":0,"33":0,"34":0,"35":1,"36":1,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"isPrivateKeyAccount","decl":{"start":{"line":15,"column":0},"end":{"line":19,"column":1}},"loc":{"start":{"line":15,"column":0},"end":{"line":19,"column":1}},"line":15},"1":{"name":"isWalletClient","decl":{"start":{"line":21,"column":7},"end":{"line":25,"column":1}},"loc":{"start":{"line":21,"column":7},"end":{"line":25,"column":1}},"line":21},"2":{"name":"isEthersSigner","decl":{"start":{"line":27,"column":0},"end":{"line":29,"column":1}},"loc":{"start":{"line":27,"column":0},"end":{"line":29,"column":1}},"line":27},"3":{"name":"isAlchemySigner","decl":{"start":{"line":31,"column":0},"end":{"line":35,"column":1}},"loc":{"start":{"line":31,"column":0},"end":{"line":35,"column":1}},"line":31},"4":{"name":"convertSigner","decl":{"start":{"line":37,"column":29},"end":{"line":76,"column":1}},"loc":{"start":{"line":37,"column":29},"end":{"line":76,"column":1}},"line":37}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/getChain.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/getChain.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":40}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":32}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":3}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":18}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":21}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":19}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":23}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":19}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":6}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":14}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":49}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":49}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":6}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":21}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":69}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":66}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":6}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":19}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":62}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":28}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":7}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":5}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":3}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":68}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":2}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":17}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":56}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":38}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":53}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":64}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":34}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":31}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":18}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":3}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":18}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":168}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":3}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":1}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":75}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":34}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":40}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":3}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":2}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":17}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":2}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":52}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":2}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":36}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":33}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":73}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":91}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":74}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":2}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":11}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":2}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":79}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":2}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":38}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":23}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":18}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":72}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":76}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":4}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":2}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":57}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":59}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":13}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":24}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":22}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":5}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":2}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":67}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":41}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":16}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":16}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":5}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":2}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":67}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":19}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":21}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":5}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":2}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":45}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":24}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":2}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":31}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":15}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":13}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":26}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":34}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":43}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":32}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":13}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":24}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":7}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":9}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":39}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":19}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":23}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":19}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":6}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":14}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":55}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":6}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":21}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":16}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":25}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":74}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":7}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":6}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":43}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":3}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":14}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":1,"48":1,"49":0,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"getChain","decl":{"start":{"line":37,"column":24},"end":{"line":47,"column":1}},"loc":{"start":{"line":37,"column":24},"end":{"line":47,"column":1}},"line":37},"1":{"name":"stringOrStringsToArray","decl":{"start":{"line":49,"column":38},"end":{"line":50,"column":34}},"loc":{"start":{"line":49,"column":38},"end":{"line":50,"column":34}},"line":49},"2":{"name":"getCustomChain","decl":{"start":{"line":98,"column":30},"end":{"line":126,"column":1}},"loc":{"start":{"line":98,"column":30},"end":{"line":126,"column":1}},"line":98}},"f":{"0":0,"1":0,"2":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/index.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":26}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":26}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":30}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":34}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":29}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":27}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":33}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":33}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/Bundler.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/Bundler.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":77}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":53}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":71}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":36}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":56}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":36}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":31}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":41}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":29}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":8}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":27}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":23}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":34}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":13}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":16}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":35}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":26}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":37}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":34}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":33}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":23}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":20}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":16}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":17}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":14}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":25}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":46}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":3}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":44}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":79}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":54}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":42}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":49}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":44}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":55}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":61}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":66}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":72}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":36}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":45}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":56}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":64}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":69}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":44}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":33}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":6}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":35}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":32}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":45}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":5}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":41}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":38}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":51}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":5}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":46}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":43}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":56}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":5}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":52}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":49}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":62}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":5}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":42}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":69}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":3}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":34}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":45}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":3}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":5}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":22}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":65}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":46}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":5}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":26}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":32}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":33}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":43}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":21}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":46}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":32}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":26}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":7}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":24}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":32}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":15}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":49}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":79}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":38}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":24}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":9}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":8}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":15}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":5}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":38}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":49}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":10}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":76}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":78}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":9}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":60}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":7}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":5}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":0}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":45}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":52}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":48}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":7}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":60}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":5}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":12}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":74}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":78}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":62}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":52}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":38}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":63}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":20}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":70}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":57}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":19}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":5}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":3}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":0}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":5}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":4}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":18}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":88}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":37}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":5}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":75}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":46}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":79}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":43}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":38}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":18}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":32}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":26}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":7}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":24}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":32}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":15}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":42}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":25}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":38}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":24}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":9}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":8}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":15}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":5}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":0}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":62}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":62}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":5}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":12}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":51}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":65}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":55}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":27}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":88}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":29}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":0}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":64}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":97}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":54}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":17}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":65}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":48}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":15}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":57}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":36}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":78}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":41}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":41}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":62}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":57}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":45}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":43}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":26}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":19}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":24}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":43}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":41}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":24}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":17}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":15}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":29}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":39}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":27}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":20}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":13}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":0}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":42}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":47}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":39}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":21}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":26}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":48}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":38}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":65}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":52}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":110}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":17}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":15}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":13}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":27}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":10}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":7}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":5}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":3}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":0}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":5}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":4}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":22}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":80}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":36}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":5}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":70}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":43}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":72}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":7}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":24}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":32}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":15}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":48}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":31}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":38}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":24}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":9}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":8}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":15}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":5}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":0}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":45}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":47}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":5}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":0}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":56}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":24}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":3}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":0}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":5}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":4}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":22}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":80}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":36}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":5}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":68}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":43}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":71}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":7}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":24}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":32}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":15}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":52}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":31}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":38}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":24}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":9}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":8}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":15}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":5}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":0}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":45}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":47}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":5}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":0}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":54}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":23}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":3}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":0}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":5}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":4}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":22}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":85}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":43}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":5}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":76}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":43}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":64}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":7}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":24}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":32}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":15}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":47}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":31}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":38}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":24}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":9}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":8}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":15}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":5}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":0}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":45}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":47}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":5}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":0}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":70}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":31}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":3}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":0}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":5}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":62}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":5}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":72}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":43}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":21}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":48}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":18}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":26}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":7}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":24}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":32}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":15}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":53}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":21}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":38}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":24}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":9}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":8}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":15}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":5}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":0}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":45}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":47}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":5}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":0}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":12}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":13}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":64}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":79}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":8}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":17}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":68}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":37}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":55}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":9}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":8}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":13}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":64}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":79}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":7}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":5}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":3}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":0}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":71}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":30}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":3}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":1,"84":1,"85":0,"86":0,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":0,"322":1,"323":1,"324":1,"325":1,"326":1,"327":0,"328":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"343":0,"344":0,"345":0,"346":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"353":0,"354":0,"355":0,"356":0,"357":0,"358":0,"359":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":1,"367":1,"368":0,"369":0,"370":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"Bundler","decl":{"start":{"line":51,"column":2},"end":{"line":83,"column":3}},"loc":{"start":{"line":51,"column":2},"end":{"line":83,"column":3}},"line":51},"1":{"name":"getBundlerUrl","decl":{"start":{"line":85,"column":9},"end":{"line":87,"column":3}},"loc":{"start":{"line":85,"column":9},"end":{"line":87,"column":3}},"line":85},"2":{"name":"estimateUserOpGas","decl":{"start":{"line":94,"column":2},"end":{"line":144,"column":3}},"loc":{"start":{"line":94,"column":2},"end":{"line":144,"column":3}},"line":94},"3":{"name":"sendUserOp","decl":{"start":{"line":152,"column":2},"end":{"line":232,"column":3}},"loc":{"start":{"line":152,"column":2},"end":{"line":232,"column":3}},"line":152},"4":{"name":"getUserOpReceipt","decl":{"start":{"line":240,"column":2},"end":{"line":262,"column":3}},"loc":{"start":{"line":240,"column":2},"end":{"line":262,"column":3}},"line":240},"5":{"name":"getUserOpStatus","decl":{"start":{"line":270,"column":2},"end":{"line":292,"column":3}},"loc":{"start":{"line":270,"column":2},"end":{"line":292,"column":3}},"line":270},"6":{"name":"getUserOpByHash","decl":{"start":{"line":300,"column":2},"end":{"line":322,"column":3}},"loc":{"start":{"line":300,"column":2},"end":{"line":322,"column":3}},"line":300},"7":{"name":"getGasFeeValues","decl":{"start":{"line":327,"column":2},"end":{"line":366,"column":3}},"loc":{"start":{"line":327,"column":2},"end":{"line":366,"column":3}},"line":327},"8":{"name":"create","decl":{"start":{"line":368,"column":2},"end":{"line":370,"column":3}},"loc":{"start":{"line":368,"column":2},"end":{"line":370,"column":3}},"line":368}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/index.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":38}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":0}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":40}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":32}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":32}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":43}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/interfaces/IBundler.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/interfaces/IBundler.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":74}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":23}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":20}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":16}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":17}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":14}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":27}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":42}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":39}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":31}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":67}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":63}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":69}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":64}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":61}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":25}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/Constants.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/Constants.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":8}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":17}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":18}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":19}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":20}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":15}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":8}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":16}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":69}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":12}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":1}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":75}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":11}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":1}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":39}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":80}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":14}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":20}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":15}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":14}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":14}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":18}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":17}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":33}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":1}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":39}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":55}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":26}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":5}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":12}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":1}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":34}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":38}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":18}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":19}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":15}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":9}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":14}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":2}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":37}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":17}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":19}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":15}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":9}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":14}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":2}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":30}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":26}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":39}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":38}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":29}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":35}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":35}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":5}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":25}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":39}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":37}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":29}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":35}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":35}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":5}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":21}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":35}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":37}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":29}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":35}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":35}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":5}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":22}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":35}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":38}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":29}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":35}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":35}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":5}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":27}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":40}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":38}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":29}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":35}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":35}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":4}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/HelperFunction.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/HelperFunction.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":71}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":32}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":30}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":10}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":42}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":52}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":17}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":24}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":24}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":31}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":8}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":32}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":65}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":82}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":15}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":31}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":10}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":8}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":27}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":22}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":59}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":6}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":4}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":70}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":18}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":52}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":38}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":68}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":73}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":42}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":38}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":27}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":13}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":24}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":37}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":3}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":90}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":1}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":45}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":47}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":17}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":76}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":81}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":77}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":17}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":95}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":209}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":37}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":81}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":38}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":81}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":37}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":80}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":3}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":55}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":81}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":0,"33":0,"34":1,"35":1,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":1,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"getTimestampInSeconds","decl":{"start":{"line":32,"column":37},"end":{"line":34,"column":1}},"loc":{"start":{"line":32,"column":37},"end":{"line":34,"column":1}},"line":32},"1":{"name":"decodeUserOperationError","decl":{"start":{"line":36,"column":7},"end":{"line":46,"column":1}},"loc":{"start":{"line":36,"column":7},"end":{"line":46,"column":1}},"line":36},"2":{"name":"decodeErrorCode","decl":{"start":{"line":48,"column":0},"end":{"line":66,"column":1}},"loc":{"start":{"line":48,"column":0},"end":{"line":66,"column":1}},"line":48}},"f":{"0":0,"1":0,"2":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/Types.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/Types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":58}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":56}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":0}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":29}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":20}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":28}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":14}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":44}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":55}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":61}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":66}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":72}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":1}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":74}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":44}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":40}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":26}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":17}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":21}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":15}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":20}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":27}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":17}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":17}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":33}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":16}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":27}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":1}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":29}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":18}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":21}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":17}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":15}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":21}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":23}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":23}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":18}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":17}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":35}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":13}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":1}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":9}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":28}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":46}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":26}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":38}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":1}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":48}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":47}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":17}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":12}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":23}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":22}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":1}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":46}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":17}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":12}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":22}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":22}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":1}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":48}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":34}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":17}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":12}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":16}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":22}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":1}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":30}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":18}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":55}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":1}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":0}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":48}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":41}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":17}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":12}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":27}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":22}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":1}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":33}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":28}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":30}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":22}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":40}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":34}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":1}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":48}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":39}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":17}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":12}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":30}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":22}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":1}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":0}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":58}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":25}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":21}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":19}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":20}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":1}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":56}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":28}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":14}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":17}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":11}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":1}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":0}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":39}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":17}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":12}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":22}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":22}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":1}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":28}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":30}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":22}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":1}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":50}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":9}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":24}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":32}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":3}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":13}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":24}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":32}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":3}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":9}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":24}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":32}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":3}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":1}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":0}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":48}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":25}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":27}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":27}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":44}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":38}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":1}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":0}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":34}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":47}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":46}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":48}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":44}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":49}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":51}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":45}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":88}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":46}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":43}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":53}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":0}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":42}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":41}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":20}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":21}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":20}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":15}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":40}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":39}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":39}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":3}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/Utils.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/Utils.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":28}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":0}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":70}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":7}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":57}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":64}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":34}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":36}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":19}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":3}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":1}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":72}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":7}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":40}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":33}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":17}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":43}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":5}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":36}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":19}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":39}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":44}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":34}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":20}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":75}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":14}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":32}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":21}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":60}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":43}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":27}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":51}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":3}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":33}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":98}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":32}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":38}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":16}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":6}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":6}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":3}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":1,"26":1,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"extractChainIdFromBundlerUrl","decl":{"start":{"line":3,"column":44},"end":{"line":12,"column":1}},"loc":{"start":{"line":3,"column":44},"end":{"line":12,"column":1}},"line":3},"1":{"name":"extractChainIdFromPaymasterUrl","decl":{"start":{"line":14,"column":46},"end":{"line":25,"column":1}},"loc":{"start":{"line":14,"column":46},"end":{"line":25,"column":1}},"line":14},"2":{"name":"deepHexlify","decl":{"start":{"line":27,"column":7},"end":{"line":53,"column":1}},"loc":{"start":{"line":27,"column":7},"end":{"line":53,"column":1}},"line":27}},"f":{"0":0,"1":0,"2":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/getAAError.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/getAAError.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":44}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":41}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":26}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":14}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":21}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":18}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":21}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":18}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":25}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":75}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":79}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":31}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":36}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":58}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":19}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":31}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":72}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":11}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":27}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":20}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":17}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":19}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":14}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":40}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":24}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":66}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":11}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":27}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":68}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":11}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":43}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":19}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":38}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":19}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":25}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":18}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":1}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":49}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":43}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":55}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":74}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":24}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":1}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":33}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":18}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":22}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":19}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":6}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":28}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":75}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":31}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":25}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":49}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":15}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":31}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":42}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":16}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":71}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":35}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":54}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":8}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":66}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":52}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":45}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":13}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":17}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":11}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":4}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":0,"21":0,"22":0,"23":0,"24":1,"25":1,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":0,"53":0,"54":1,"55":1,"56":1,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"matchError","decl":{"start":{"line":20,"column":19},"end":{"line":24,"column":11}},"loc":{"start":{"line":20,"column":19},"end":{"line":24,"column":11}},"line":20},"1":{"name":"buildErrorStrings","decl":{"start":{"line":26,"column":26},"end":{"line":40,"column":19}},"loc":{"start":{"line":26,"column":26},"end":{"line":40,"column":19}},"line":26},"2":{"name":"AccountAbstractionError","decl":{"start":{"line":52,"column":2},"end":{"line":54,"column":3}},"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":3}},"line":52},"3":{"name":"getAAError","decl":{"start":{"line":57,"column":26},"end":{"line":86,"column":1}},"loc":{"start":{"line":57,"column":26},"end":{"line":86,"column":1}},"line":57}},"f":{"0":0,"1":0,"2":0,"3":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/addresses.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/addresses.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":55}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":58}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":68}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":68}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":60}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":56}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":67}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":62}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":58}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":61}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":61}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":60}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":58}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":60}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/index.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":55}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":51}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":67}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":47}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":37}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":46}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":78}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":20}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":10}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":31}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":33}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":1}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":28}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":48}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":28}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":22}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":42}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":22}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":1}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":21}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":41}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":21}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":1}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":26}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":13}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":24}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":21}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":15}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":13}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":10}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":24}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/EntryPointABI.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/EntryPointABI.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":3}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":62}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":59}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":6}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":30}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":17}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":4}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":3}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":68}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":64}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":6}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":21}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":17}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":4}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":13}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":68}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":65}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":61}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":6}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":31}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":17}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":4}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":3}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":75}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":27}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":17}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":4}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":70}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":75}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":32}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":17}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":4}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":79}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":38}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":17}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":4}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":3}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":21}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":13}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":7}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":22}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":32}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":27}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":23}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":8}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":7}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":22}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":32}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":23}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":23}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":8}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":7}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":23}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":32}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":24}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":23}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":8}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":7}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":23}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":32}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":26}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":23}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":7}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":6}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":28}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":17}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":4}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":75}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":21}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":13}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":7}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":22}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":32}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":24}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":23}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":8}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":7}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":23}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":32}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":29}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":23}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":7}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":6}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":22}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":17}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":4}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":3}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":21}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":13}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":7}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":22}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":32}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":27}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":23}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":8}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":7}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":22}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":32}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":23}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":23}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":8}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":7}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":23}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":32}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":22}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":23}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":8}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":7}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":23}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":30}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":29}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":21}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":7}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":6}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":31}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":17}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":4}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":3}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":21}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":13}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":7}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":22}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":32}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":27}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":23}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":7}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":6}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":39}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":17}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":4}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":3}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":21}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":13}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":7}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":22}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":32}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":24}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":23}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":8}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":7}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":23}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":32}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":28}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":23}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":8}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":7}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":23}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":32}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":32}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":23}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":7}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":6}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":24}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":17}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":4}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":3}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":21}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":13}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":7}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":22}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":32}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":24}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":23}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":8}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":7}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":23}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":32}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":29}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":23}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":7}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":6}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":26}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":17}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":4}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":3}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":21}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":13}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":7}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":22}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":32}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":24}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":23}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":8}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":7}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":23}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":32}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":32}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":23}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":8}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":7}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":23}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":32}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":23}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":23}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":7}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":6}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":27}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":17}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":4}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":3}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":21}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":13}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":7}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":22}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":32}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":27}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":23}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":8}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":7}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":22}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":32}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":23}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":23}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":8}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":7}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":22}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":32}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":26}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":23}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":8}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":7}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":23}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":32}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":22}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":23}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":8}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":78}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":7}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":23}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":32}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":30}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":23}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":8}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":7}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":23}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":32}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":30}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":23}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":7}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":6}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":31}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":17}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":4}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":3}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":21}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":13}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":7}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":22}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":32}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":27}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":23}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":8}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":7}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":22}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":32}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":23}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":23}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":8}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":7}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":23}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":32}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":22}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":23}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":7}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":6}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":39}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":17}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":4}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":3}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":21}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":13}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":7}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":22}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":32}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":27}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":23}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":8}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":7}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":22}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":32}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":23}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":23}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":8}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":7}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":23}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":32}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":22}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":23}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":8}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":7}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":23}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":30}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":29}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":21}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":7}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":6}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":38}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":17}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":4}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":3}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":21}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":13}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":7}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":22}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":32}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":24}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":23}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":8}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":7}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":23}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":32}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":32}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":23}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":8}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":7}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":23}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":32}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":23}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":23}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":7}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":6}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":22}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":17}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":4}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":3}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":13}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":73}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":6}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":21}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":16}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":31}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":20}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":4}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":3}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":76}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":22}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":70}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":28}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":20}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":4}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":3}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":13}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":67}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":60}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":6}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":30}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":16}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":34}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":20}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":4}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":3}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":76}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":22}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":16}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":31}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":20}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":4}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":3}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":69}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":21}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":14}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":68}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":61}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":66}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":74}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":70}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":6}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":28}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":20}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":4}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":3}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":76}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":27}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":14}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":7}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":21}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":72}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":65}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":70}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":78}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":74}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":10}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":57}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":21}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":21}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":7}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":6}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":28}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":20}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":4}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":3}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":13}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":67}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":63}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":6}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":21}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":75}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":28}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":20}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":4}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":3}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":73}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":29}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":16}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":34}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":20}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":4}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":3}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":13}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":7}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":21}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":71}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":70}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":69}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":69}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":11}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":36}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":37}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":27}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":12}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":11}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":36}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":39}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":27}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":12}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":72}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":77}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":69}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":10}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":51}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":23}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":21}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":7}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":6}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":26}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":70}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":28}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":20}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":4}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":3}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":13}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":7}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":21}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":11}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":25}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":75}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":74}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":73}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":73}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":15}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":40}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":41}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":31}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":16}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":15}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":40}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":43}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":31}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":16}},"466":{"start":{"line":467,"column":0},"end":{"line":467,"column":76}},"467":{"start":{"line":468,"column":0},"end":{"line":468,"column":15}},"468":{"start":{"line":469,"column":0},"end":{"line":469,"column":38}},"469":{"start":{"line":470,"column":0},"end":{"line":470,"column":41}},"470":{"start":{"line":471,"column":0},"end":{"line":471,"column":29}},"471":{"start":{"line":472,"column":0},"end":{"line":472,"column":16}},"472":{"start":{"line":473,"column":0},"end":{"line":473,"column":73}},"473":{"start":{"line":474,"column":0},"end":{"line":474,"column":14}},"474":{"start":{"line":475,"column":0},"end":{"line":475,"column":57}},"475":{"start":{"line":476,"column":0},"end":{"line":476,"column":28}},"476":{"start":{"line":477,"column":0},"end":{"line":477,"column":27}},"477":{"start":{"line":478,"column":0},"end":{"line":478,"column":12}},"478":{"start":{"line":479,"column":0},"end":{"line":479,"column":11}},"479":{"start":{"line":480,"column":0},"end":{"line":480,"column":49}},"480":{"start":{"line":481,"column":0},"end":{"line":481,"column":31}},"481":{"start":{"line":482,"column":0},"end":{"line":482,"column":27}},"482":{"start":{"line":483,"column":0},"end":{"line":483,"column":12}},"483":{"start":{"line":484,"column":0},"end":{"line":484,"column":69}},"484":{"start":{"line":485,"column":0},"end":{"line":485,"column":10}},"485":{"start":{"line":486,"column":0},"end":{"line":486,"column":66}},"486":{"start":{"line":487,"column":0},"end":{"line":487,"column":33}},"487":{"start":{"line":488,"column":0},"end":{"line":488,"column":23}},"488":{"start":{"line":489,"column":0},"end":{"line":489,"column":8}},"489":{"start":{"line":490,"column":0},"end":{"line":490,"column":79}},"490":{"start":{"line":491,"column":0},"end":{"line":491,"column":6}},"491":{"start":{"line":492,"column":0},"end":{"line":492,"column":32}},"492":{"start":{"line":493,"column":0},"end":{"line":493,"column":16}},"493":{"start":{"line":494,"column":0},"end":{"line":494,"column":34}},"494":{"start":{"line":495,"column":0},"end":{"line":495,"column":20}},"495":{"start":{"line":496,"column":0},"end":{"line":496,"column":4}},"496":{"start":{"line":497,"column":0},"end":{"line":497,"column":3}},"497":{"start":{"line":498,"column":0},"end":{"line":498,"column":13}},"498":{"start":{"line":499,"column":0},"end":{"line":499,"column":7}},"499":{"start":{"line":500,"column":0},"end":{"line":500,"column":21}},"500":{"start":{"line":501,"column":0},"end":{"line":501,"column":71}},"501":{"start":{"line":502,"column":0},"end":{"line":502,"column":70}},"502":{"start":{"line":503,"column":0},"end":{"line":503,"column":69}},"503":{"start":{"line":504,"column":0},"end":{"line":504,"column":69}},"504":{"start":{"line":505,"column":0},"end":{"line":505,"column":11}},"505":{"start":{"line":506,"column":0},"end":{"line":506,"column":36}},"506":{"start":{"line":507,"column":0},"end":{"line":507,"column":37}},"507":{"start":{"line":508,"column":0},"end":{"line":508,"column":27}},"508":{"start":{"line":509,"column":0},"end":{"line":509,"column":12}},"509":{"start":{"line":510,"column":0},"end":{"line":510,"column":11}},"510":{"start":{"line":511,"column":0},"end":{"line":511,"column":36}},"511":{"start":{"line":512,"column":0},"end":{"line":512,"column":39}},"512":{"start":{"line":513,"column":0},"end":{"line":513,"column":27}},"513":{"start":{"line":514,"column":0},"end":{"line":514,"column":12}},"514":{"start":{"line":515,"column":0},"end":{"line":515,"column":72}},"515":{"start":{"line":516,"column":0},"end":{"line":516,"column":77}},"516":{"start":{"line":517,"column":0},"end":{"line":517,"column":69}},"517":{"start":{"line":518,"column":0},"end":{"line":518,"column":10}},"518":{"start":{"line":519,"column":0},"end":{"line":519,"column":53}},"519":{"start":{"line":520,"column":0},"end":{"line":520,"column":20}},"520":{"start":{"line":521,"column":0},"end":{"line":521,"column":23}},"521":{"start":{"line":522,"column":0},"end":{"line":522,"column":8}},"522":{"start":{"line":523,"column":0},"end":{"line":523,"column":79}},"523":{"start":{"line":524,"column":0},"end":{"line":524,"column":6}},"524":{"start":{"line":525,"column":0},"end":{"line":525,"column":22}},"525":{"start":{"line":526,"column":0},"end":{"line":526,"column":16}},"526":{"start":{"line":527,"column":0},"end":{"line":527,"column":34}},"527":{"start":{"line":528,"column":0},"end":{"line":528,"column":20}},"528":{"start":{"line":529,"column":0},"end":{"line":529,"column":4}},"529":{"start":{"line":530,"column":0},"end":{"line":530,"column":3}},"530":{"start":{"line":531,"column":0},"end":{"line":531,"column":72}},"531":{"start":{"line":532,"column":0},"end":{"line":532,"column":27}},"532":{"start":{"line":533,"column":0},"end":{"line":533,"column":16}},"533":{"start":{"line":534,"column":0},"end":{"line":534,"column":34}},"534":{"start":{"line":535,"column":0},"end":{"line":535,"column":20}},"535":{"start":{"line":536,"column":0},"end":{"line":536,"column":4}},"536":{"start":{"line":537,"column":0},"end":{"line":537,"column":3}},"537":{"start":{"line":538,"column":0},"end":{"line":538,"column":13}},"538":{"start":{"line":539,"column":0},"end":{"line":539,"column":65}},"539":{"start":{"line":540,"column":0},"end":{"line":540,"column":7}},"540":{"start":{"line":541,"column":0},"end":{"line":541,"column":21}},"541":{"start":{"line":542,"column":0},"end":{"line":542,"column":11}},"542":{"start":{"line":543,"column":0},"end":{"line":543,"column":25}},"543":{"start":{"line":544,"column":0},"end":{"line":544,"column":75}},"544":{"start":{"line":545,"column":0},"end":{"line":545,"column":74}},"545":{"start":{"line":546,"column":0},"end":{"line":546,"column":15}},"546":{"start":{"line":547,"column":0},"end":{"line":547,"column":40}},"547":{"start":{"line":548,"column":0},"end":{"line":548,"column":45}},"548":{"start":{"line":549,"column":0},"end":{"line":549,"column":31}},"549":{"start":{"line":550,"column":0},"end":{"line":550,"column":16}},"550":{"start":{"line":551,"column":0},"end":{"line":551,"column":15}},"551":{"start":{"line":552,"column":0},"end":{"line":552,"column":40}},"552":{"start":{"line":553,"column":0},"end":{"line":553,"column":37}},"553":{"start":{"line":554,"column":0},"end":{"line":554,"column":31}},"554":{"start":{"line":555,"column":0},"end":{"line":555,"column":16}},"555":{"start":{"line":556,"column":0},"end":{"line":556,"column":15}},"556":{"start":{"line":557,"column":0},"end":{"line":557,"column":40}},"557":{"start":{"line":558,"column":0},"end":{"line":558,"column":54}},"558":{"start":{"line":559,"column":0},"end":{"line":559,"column":31}},"559":{"start":{"line":560,"column":0},"end":{"line":560,"column":16}},"560":{"start":{"line":561,"column":0},"end":{"line":561,"column":15}},"561":{"start":{"line":562,"column":0},"end":{"line":562,"column":40}},"562":{"start":{"line":563,"column":0},"end":{"line":563,"column":48}},"563":{"start":{"line":564,"column":0},"end":{"line":564,"column":31}},"564":{"start":{"line":565,"column":0},"end":{"line":565,"column":16}},"565":{"start":{"line":566,"column":0},"end":{"line":566,"column":15}},"566":{"start":{"line":567,"column":0},"end":{"line":567,"column":40}},"567":{"start":{"line":568,"column":0},"end":{"line":568,"column":43}},"568":{"start":{"line":569,"column":0},"end":{"line":569,"column":31}},"569":{"start":{"line":570,"column":0},"end":{"line":570,"column":16}},"570":{"start":{"line":571,"column":0},"end":{"line":571,"column":78}},"571":{"start":{"line":572,"column":0},"end":{"line":572,"column":15}},"572":{"start":{"line":573,"column":0},"end":{"line":573,"column":40}},"573":{"start":{"line":574,"column":0},"end":{"line":574,"column":37}},"574":{"start":{"line":575,"column":0},"end":{"line":575,"column":31}},"575":{"start":{"line":576,"column":0},"end":{"line":576,"column":16}},"576":{"start":{"line":577,"column":0},"end":{"line":577,"column":15}},"577":{"start":{"line":578,"column":0},"end":{"line":578,"column":40}},"578":{"start":{"line":579,"column":0},"end":{"line":579,"column":45}},"579":{"start":{"line":580,"column":0},"end":{"line":580,"column":31}},"580":{"start":{"line":581,"column":0},"end":{"line":581,"column":15}},"581":{"start":{"line":582,"column":0},"end":{"line":582,"column":14}},"582":{"start":{"line":583,"column":0},"end":{"line":583,"column":59}},"583":{"start":{"line":584,"column":0},"end":{"line":584,"column":28}},"584":{"start":{"line":585,"column":0},"end":{"line":585,"column":25}},"585":{"start":{"line":586,"column":0},"end":{"line":586,"column":12}},"586":{"start":{"line":587,"column":0},"end":{"line":587,"column":75}},"587":{"start":{"line":588,"column":0},"end":{"line":588,"column":72}},"588":{"start":{"line":589,"column":0},"end":{"line":589,"column":78}},"589":{"start":{"line":590,"column":0},"end":{"line":590,"column":72}},"590":{"start":{"line":591,"column":0},"end":{"line":591,"column":10}},"591":{"start":{"line":592,"column":0},"end":{"line":592,"column":53}},"592":{"start":{"line":593,"column":0},"end":{"line":593,"column":23}},"593":{"start":{"line":594,"column":0},"end":{"line":594,"column":21}},"594":{"start":{"line":595,"column":0},"end":{"line":595,"column":8}},"595":{"start":{"line":596,"column":0},"end":{"line":596,"column":63}},"596":{"start":{"line":597,"column":0},"end":{"line":597,"column":6}},"597":{"start":{"line":598,"column":0},"end":{"line":598,"column":26}},"598":{"start":{"line":599,"column":0},"end":{"line":599,"column":14}},"599":{"start":{"line":600,"column":0},"end":{"line":600,"column":73}},"600":{"start":{"line":601,"column":0},"end":{"line":601,"column":6}},"601":{"start":{"line":602,"column":0},"end":{"line":602,"column":34}},"602":{"start":{"line":603,"column":0},"end":{"line":603,"column":20}},"603":{"start":{"line":604,"column":0},"end":{"line":604,"column":4}},"604":{"start":{"line":605,"column":0},"end":{"line":605,"column":3}},"605":{"start":{"line":606,"column":0},"end":{"line":606,"column":13}},"606":{"start":{"line":607,"column":0},"end":{"line":607,"column":61}},"607":{"start":{"line":608,"column":0},"end":{"line":608,"column":60}},"608":{"start":{"line":609,"column":0},"end":{"line":609,"column":6}},"609":{"start":{"line":610,"column":0},"end":{"line":610,"column":32}},"610":{"start":{"line":611,"column":0},"end":{"line":611,"column":70}},"611":{"start":{"line":612,"column":0},"end":{"line":612,"column":28}},"612":{"start":{"line":613,"column":0},"end":{"line":613,"column":20}},"613":{"start":{"line":614,"column":0},"end":{"line":614,"column":4}},"614":{"start":{"line":615,"column":0},"end":{"line":615,"column":3}},"615":{"start":{"line":616,"column":0},"end":{"line":616,"column":78}},"616":{"start":{"line":617,"column":0},"end":{"line":617,"column":30}},"617":{"start":{"line":618,"column":0},"end":{"line":618,"column":64}},"618":{"start":{"line":619,"column":0},"end":{"line":619,"column":28}},"619":{"start":{"line":620,"column":0},"end":{"line":620,"column":20}},"620":{"start":{"line":621,"column":0},"end":{"line":621,"column":4}},"621":{"start":{"line":622,"column":0},"end":{"line":622,"column":3}},"622":{"start":{"line":623,"column":0},"end":{"line":623,"column":15}},"623":{"start":{"line":624,"column":0},"end":{"line":624,"column":24}},"624":{"start":{"line":625,"column":0},"end":{"line":625,"column":16}},"625":{"start":{"line":626,"column":0},"end":{"line":626,"column":34}},"626":{"start":{"line":627,"column":0},"end":{"line":627,"column":20}},"627":{"start":{"line":628,"column":0},"end":{"line":628,"column":4}},"628":{"start":{"line":629,"column":0},"end":{"line":629,"column":3}},"629":{"start":{"line":630,"column":0},"end":{"line":630,"column":13}},"630":{"start":{"line":631,"column":0},"end":{"line":631,"column":7}},"631":{"start":{"line":632,"column":0},"end":{"line":632,"column":40}},"632":{"start":{"line":633,"column":0},"end":{"line":633,"column":32}},"633":{"start":{"line":634,"column":0},"end":{"line":634,"column":23}},"634":{"start":{"line":635,"column":0},"end":{"line":635,"column":7}},"635":{"start":{"line":636,"column":0},"end":{"line":636,"column":6}},"636":{"start":{"line":637,"column":0},"end":{"line":637,"column":26}},"637":{"start":{"line":638,"column":0},"end":{"line":638,"column":16}},"638":{"start":{"line":639,"column":0},"end":{"line":639,"column":34}},"639":{"start":{"line":640,"column":0},"end":{"line":640,"column":20}},"640":{"start":{"line":641,"column":0},"end":{"line":641,"column":4}},"641":{"start":{"line":642,"column":0},"end":{"line":642,"column":3}},"642":{"start":{"line":643,"column":0},"end":{"line":643,"column":13}},"643":{"start":{"line":644,"column":0},"end":{"line":644,"column":7}},"644":{"start":{"line":645,"column":0},"end":{"line":645,"column":40}},"645":{"start":{"line":646,"column":0},"end":{"line":646,"column":32}},"646":{"start":{"line":647,"column":0},"end":{"line":647,"column":23}},"647":{"start":{"line":648,"column":0},"end":{"line":648,"column":8}},"648":{"start":{"line":649,"column":0},"end":{"line":649,"column":74}},"649":{"start":{"line":650,"column":0},"end":{"line":650,"column":6}},"650":{"start":{"line":651,"column":0},"end":{"line":651,"column":23}},"651":{"start":{"line":652,"column":0},"end":{"line":652,"column":16}},"652":{"start":{"line":653,"column":0},"end":{"line":653,"column":34}},"653":{"start":{"line":654,"column":0},"end":{"line":654,"column":20}},"654":{"start":{"line":655,"column":0},"end":{"line":655,"column":4}},"655":{"start":{"line":656,"column":0},"end":{"line":656,"column":49}},"656":{"start":{"line":657,"column":0},"end":{"line":657,"column":10}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":1,"357":1,"358":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":1,"365":1,"366":1,"367":1,"368":1,"369":1,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"425":1,"426":1,"427":1,"428":1,"429":1,"430":1,"431":1,"432":1,"433":1,"434":1,"435":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1,"443":1,"444":1,"445":1,"446":1,"447":1,"448":1,"449":1,"450":1,"451":1,"452":1,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1,"461":1,"462":1,"463":1,"464":1,"465":1,"466":1,"467":1,"468":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1,"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1,"489":1,"490":1,"491":1,"492":1,"493":1,"494":1,"495":1,"496":1,"497":1,"498":1,"499":1,"500":1,"501":1,"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1,"516":1,"517":1,"518":1,"519":1,"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1,"528":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"536":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"544":1,"545":1,"546":1,"547":1,"548":1,"549":1,"550":1,"551":1,"552":1,"553":1,"554":1,"555":1,"556":1,"557":1,"558":1,"559":1,"560":1,"561":1,"562":1,"563":1,"564":1,"565":1,"566":1,"567":1,"568":1,"569":1,"570":1,"571":1,"572":1,"573":1,"574":1,"575":1,"576":1,"577":1,"578":1,"579":1,"580":1,"581":1,"582":1,"583":1,"584":1,"585":1,"586":1,"587":1,"588":1,"589":1,"590":1,"591":1,"592":1,"593":1,"594":1,"595":1,"596":1,"597":1,"598":1,"599":1,"600":1,"601":1,"602":1,"603":1,"604":1,"605":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"615":1,"616":1,"617":1,"618":1,"619":1,"620":1,"621":1,"622":1,"623":1,"624":1,"625":1,"626":1,"627":1,"628":1,"629":1,"630":1,"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":1,"639":1,"640":1,"641":1,"642":1,"643":1,"644":1,"645":1,"646":1,"647":1,"648":1,"649":1,"650":1,"651":1,"652":1,"653":1,"654":1,"655":1,"656":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/K1ValidatorAbi.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/K1ValidatorAbi.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":3}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":17}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":4}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":3}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":31}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":17}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":4}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":3}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":28}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":17}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":4}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":3}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":15}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":34}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":17}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":4}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":3}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":13}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":7}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":32}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":29}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":23}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":7}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":6}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":26}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":14}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":7}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":29}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":17}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":20}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":7}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":6}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":28}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":20}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":4}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":13}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":7}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":32}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":23}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":23}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":7}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":6}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":25}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":14}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":7}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":29}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":17}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":20}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":7}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":6}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":28}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":20}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":4}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":13}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":7}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":32}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":17}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":23}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":8}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":7}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":32}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":21}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":23}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":8}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":7}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":30}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":21}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":21}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":7}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":6}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":39}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":14}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":7}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":31}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":17}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":22}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":7}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":6}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":28}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":20}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":4}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":3}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":15}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":17}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":14}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":7}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":31}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":17}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":22}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":7}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":6}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":28}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":20}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":4}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":3}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":13}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":7}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":30}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":21}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":21}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":7}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":6}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":22}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":16}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":34}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":20}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":4}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":3}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":13}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":7}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":30}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":17}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":21}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":7}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":6}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":24}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":16}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":34}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":20}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":4}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":3}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":13}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":7}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":32}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":17}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":23}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":7}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":6}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":31}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":14}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":7}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":32}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":17}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":23}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":7}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":6}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":28}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":20}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":4}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":3}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":13}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":7}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":32}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":25}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":23}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":7}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":6}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":30}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":16}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":34}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":20}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":4}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":3}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":13}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":7}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":21}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":11}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":36}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":27}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":27}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":12}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":11}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":36}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":26}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":27}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":12}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":11}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":34}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":29}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":25}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":12}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":11}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":34}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":29}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":25}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":12}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":11}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":36}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":37}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":27}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":12}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":11}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":36}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":39}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":27}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":12}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":11}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":36}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":28}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":27}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":12}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":11}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":34}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":37}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":25}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":12}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":11}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":34}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":30}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":25}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":11}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":10}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":51}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":23}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":21}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":8}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":7}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":32}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":27}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":23}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":7}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":6}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":27}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":14}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":7}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":32}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":17}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":23}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":7}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":6}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":28}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":20}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":4}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":3}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":15}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":20}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":14}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":7}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":31}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":17}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":22}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":7}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":6}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":28}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":20}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":3}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":10}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/K1ValidatorFactoryAbi.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/K1ValidatorFactoryAbi.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":38}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":3}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":7}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":32}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":31}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":23}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":8}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":7}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":29}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":8}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":7}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":32}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":28}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":8}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":7}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":43}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":29}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":23}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":8}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":7}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":42}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":25}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":23}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":7}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":6}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":34}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":23}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":4}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":15}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":31}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":17}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":4}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":15}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":28}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":17}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":4}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":3}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":15}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":37}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":17}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":4}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":15}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":34}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":17}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":4}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":3}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":15}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":30}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":17}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":4}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":3}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":15}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":25}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":17}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":4}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":3}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":15}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":34}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":17}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":4}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":21}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":13}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":7}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":22}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":32}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":24}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":23}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":8}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":7}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":22}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":32}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":22}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":23}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":8}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":7}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":22}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":32}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":22}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":23}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":7}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":6}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":27}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":17}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":4}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":21}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":13}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":7}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":22}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":32}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":29}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":23}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":7}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":6}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":38}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":17}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":4}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":3}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":21}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":13}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":7}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":22}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":32}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":29}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":23}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":7}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":6}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":39}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":17}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":4}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":3}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":21}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":13}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":7}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":22}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":32}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":25}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":23}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":8}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":7}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":22}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":32}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":25}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":23}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":7}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":6}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":33}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":17}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":4}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":3}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":15}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":35}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":14}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":7}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":32}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":17}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":23}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":7}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":6}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":28}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":20}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":4}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":3}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":15}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":25}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":14}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":7}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":43}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":17}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":23}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":7}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":6}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":28}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":20}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":4}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":3}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":15}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":25}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":14}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":7}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":32}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":17}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":23}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":7}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":6}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":28}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":20}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":4}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":3}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":15}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":21}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":14}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":7}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":42}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":17}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":23}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":7}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":6}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":28}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":20}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":4}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":3}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":13}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":7}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":32}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":26}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":23}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":8}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":7}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":31}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":32}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":22}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":7}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":6}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":21}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":16}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":31}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":20}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":4}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":3}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":15}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":36}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":16}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":31}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":20}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":4}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":3}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":13}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":7}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":32}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":29}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":23}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":7}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":6}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":38}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":16}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":31}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":20}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":4}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":3}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":13}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":7}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":32}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":17}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":23}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":8}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":7}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":32}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":17}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":23}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":8}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":7}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":34}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":17}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":25}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":8}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":7}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":30}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":17}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":21}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":7}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":6}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":34}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":14}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":7}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":40}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":32}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":23}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":7}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":6}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":28}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":20}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":4}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":3}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":13}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":7}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":32}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":25}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":23}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":8}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":7}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":32}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":22}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":23}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":8}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":7}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":34}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":26}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":25}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":8}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":7}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":30}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":26}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":21}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":7}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":6}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":26}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":14}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":7}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":40}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":17}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":23}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":7}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":6}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":31}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":20}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":4}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":3}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":15}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":18}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":14}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":7}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":32}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":23}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":23}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":7}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":6}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":28}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":20}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":4}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":3}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":13}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":7}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":32}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":29}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":23}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":7}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":6}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":39}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":14}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":7}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":32}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":23}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":23}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":7}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":6}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":28}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":20}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":4}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":3}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":15}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":30}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":16}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":31}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":20}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":4}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":3}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":15}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":37}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":16}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":31}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":20}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":4}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":3}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":13}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":7}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":32}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":25}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":23}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":7}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":6}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":30}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":16}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":31}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":20}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":4}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":3}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":13}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":7}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":32}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":26}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":23}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":7}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":6}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":24}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":16}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":34}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":20}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":4}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":3}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":13}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":7}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":32}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":26}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":23}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":8}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":7}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":40}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":32}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":23}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":7}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":6}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":26}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":16}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":34}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":20}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":3}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":10}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":1,"357":1,"358":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":1,"365":1,"366":1,"367":1,"368":1,"369":1,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/MockExecutorAbi.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/MockExecutorAbi.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":3}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":21}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":7}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":23}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":32}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":30}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":23}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":7}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":6}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":36}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":17}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":4}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":3}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":13}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":7}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":38}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":21}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":23}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":8}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":7}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":40}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":24}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":23}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":8}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":7}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":32}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":23}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":23}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":8}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":7}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":32}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":22}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":23}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":8}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":7}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":30}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":25}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":21}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":7}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":6}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":36}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":14}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":7}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":32}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":27}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":23}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":7}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":6}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":34}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":20}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":4}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":13}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":7}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":40}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":24}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":23}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":8}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":7}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":30}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":25}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":21}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":7}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":6}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":29}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":14}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":7}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":32}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":27}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":23}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":7}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":6}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":34}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":20}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":4}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":13}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":7}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":40}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":24}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":23}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":8}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":7}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":21}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":11}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":36}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":27}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":27}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":12}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":11}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":36}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":26}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":27}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":12}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":11}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":34}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":29}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":25}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":11}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":10}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":43}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":22}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":23}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":7}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":6}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":35}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":14}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":7}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":32}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":27}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":23}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":7}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":6}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":34}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":20}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":4}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":3}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":13}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":7}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":40}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":24}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":23}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":8}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":7}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":32}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":23}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":23}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":8}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":7}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":32}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":22}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":23}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":8}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":7}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":30}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":25}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":21}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":7}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":6}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":30}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":14}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":7}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":32}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":27}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":23}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":7}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":6}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":34}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":20}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":4}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":3}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":15}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":27}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":14}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":7}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":43}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":17}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":23}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":7}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":6}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":28}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":20}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":4}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":3}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":13}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":7}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":32}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":17}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":23}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":7}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":6}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":26}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":14}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":7}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":29}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":17}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":20}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":7}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":6}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":28}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":20}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":4}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":3}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":13}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":7}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":32}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":29}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":23}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":7}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":6}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":25}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":14}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":7}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":29}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":17}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":20}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":7}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":6}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":28}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":20}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":4}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":3}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":13}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":7}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":30}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":21}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":21}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":7}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":6}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":22}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":16}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":34}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":20}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":4}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":3}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":13}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":7}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":30}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":21}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":21}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":7}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":6}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":24}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":16}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":34}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":20}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":4}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":3}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":13}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":7}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":40}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":24}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":23}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":8}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":7}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":21}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":11}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":36}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":27}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":27}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":12}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":11}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":36}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":26}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":27}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":12}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":11}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":34}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":29}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":25}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":11}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":10}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":43}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":22}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":23}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":7}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":6}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":38}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":14}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":7}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":32}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":27}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":23}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":7}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":6}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":34}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":20}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":4}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":3}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":13}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":7}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":40}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":24}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":23}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":8}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":7}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":32}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":23}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":23}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":8}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":7}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":32}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":22}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":23}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":8}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":7}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":30}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":25}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":21}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":7}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":6}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":33}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":14}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":7}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":32}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":27}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":23}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":7}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":6}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":34}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":20}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":4}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":3}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":31}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":19}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":3}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":10}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"308":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/NexusAbi.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/NexusAbi.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":25}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":3}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":7}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":32}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":29}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":23}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":7}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":6}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":23}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":4}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":3}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":38}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":17}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":4}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":15}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":38}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":17}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":4}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":3}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":15}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":31}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":17}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":4}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":15}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":35}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":17}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":4}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":15}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":28}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":17}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":4}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":13}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":7}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":31}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":25}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":22}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":7}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":6}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":48}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":17}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":4}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":3}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":15}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":43}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":17}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":4}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":13}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":7}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":31}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":25}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":22}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":7}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":6}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":44}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":17}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":4}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":15}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":38}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":17}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":4}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":3}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":13}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":7}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":32}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":28}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":23}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":7}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":6}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":33}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":17}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":4}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":3}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":15}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":32}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":17}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":4}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":3}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":15}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":41}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":17}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":4}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":3}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":15}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":28}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":17}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":4}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":3}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":15}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":41}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":17}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":4}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":3}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":15}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":25}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":17}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":4}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":3}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":13}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":7}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":32}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":23}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":23}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":7}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":6}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":26}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":17}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":4}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":3}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":13}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":7}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":32}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":29}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":23}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":7}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":6}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":32}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":17}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":4}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":3}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":15}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":42}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":17}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":4}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":3}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":13}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":7}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":32}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":22}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":23}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":7}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":6}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":42}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":17}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":4}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":3}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":13}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":7}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":32}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":22}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":23}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":7}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":6}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":36}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":17}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":4}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":3}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":15}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":35}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":17}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":4}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":3}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":13}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":7}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":32}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":29}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":23}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":7}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":6}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":33}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":17}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":4}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":3}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":13}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":7}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":31}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":25}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":22}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":7}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":6}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":35}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":17}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":4}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":3}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":15}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":38}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":17}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":4}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":3}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":13}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":7}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":32}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":29}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":23}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":8}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":7}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":32}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":23}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":23}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":7}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":6}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":35}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":17}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":4}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":3}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":13}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":7}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":32}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":29}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":23}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":8}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":7}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":32}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":23}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":23}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":7}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":6}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":31}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":17}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":4}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":3}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":15}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":38}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":17}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":4}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":3}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":15}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":36}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":17}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":4}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":3}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":13}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":7}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":32}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":25}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":23}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":7}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":6}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":34}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":17}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":4}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":3}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":13}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":7}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":33}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":25}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":22}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":7}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":6}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":32}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":17}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":4}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":3}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":13}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":7}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":33}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":25}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":22}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":7}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":6}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":32}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":17}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":4}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":3}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":13}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":7}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":32}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":29}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":23}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":7}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":6}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":34}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":17}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":4}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":3}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":15}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":26}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":17}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":4}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":3}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":21}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":13}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":7}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":22}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":42}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":25}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":23}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":7}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":6}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":38}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":17}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":4}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":3}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":21}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":13}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":7}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":21}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":11}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":36}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":27}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":27}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":12}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":11}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":36}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":26}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":27}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":12}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":11}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":34}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":29}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":25}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":12}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":11}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":34}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":29}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":25}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":12}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":11}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":36}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":37}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":27}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":12}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":11}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":36}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":39}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":27}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":12}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":11}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":36}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":28}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":27}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":12}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":11}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":34}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":37}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":25}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":12}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":11}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":34}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":30}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":25}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":11}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":10}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":23}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":51}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":23}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":21}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":8}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":7}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":23}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":30}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":29}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":21}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":7}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":6}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":21}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":17}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":4}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":3}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":21}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":13}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":7}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":23}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":32}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":29}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":23}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":8}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":7}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":23}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":32}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":23}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":23}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":7}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":6}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":28}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":17}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":4}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":3}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":21}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":13}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":7}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":23}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":32}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":29}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":23}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":8}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":7}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":23}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":32}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":23}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":23}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":7}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":6}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":30}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":17}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":4}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":3}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":21}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":13}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":7}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":23}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":32}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":36}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":23}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":8}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":7}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":23}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":30}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":23}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":21}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":7}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":6}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":40}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":17}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":4}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":3}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":21}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":13}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":7}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":23}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":32}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":36}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":23}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":8}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":7}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":23}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":30}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":23}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":21}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":7}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":6}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":35}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":17}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":4}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":3}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":21}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":13}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":7}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":22}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":32}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":31}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":23}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":7}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":6}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":21}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":17}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":4}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":3}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":31}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":20}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":4}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":3}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":15}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":29}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":14}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":7}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":32}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":17}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":23}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":7}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":6}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":28}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":20}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":4}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":3}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":15}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":22}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":14}},"466":{"start":{"line":467,"column":0},"end":{"line":467,"column":7}},"467":{"start":{"line":468,"column":0},"end":{"line":468,"column":31}},"468":{"start":{"line":469,"column":0},"end":{"line":469,"column":17}},"469":{"start":{"line":470,"column":0},"end":{"line":470,"column":22}},"470":{"start":{"line":471,"column":0},"end":{"line":471,"column":7}},"471":{"start":{"line":472,"column":0},"end":{"line":472,"column":6}},"472":{"start":{"line":473,"column":0},"end":{"line":473,"column":28}},"473":{"start":{"line":474,"column":0},"end":{"line":474,"column":20}},"474":{"start":{"line":475,"column":0},"end":{"line":475,"column":4}},"475":{"start":{"line":476,"column":0},"end":{"line":476,"column":3}},"476":{"start":{"line":477,"column":0},"end":{"line":477,"column":15}},"477":{"start":{"line":478,"column":0},"end":{"line":478,"column":23}},"478":{"start":{"line":479,"column":0},"end":{"line":479,"column":16}},"479":{"start":{"line":480,"column":0},"end":{"line":480,"column":31}},"480":{"start":{"line":481,"column":0},"end":{"line":481,"column":20}},"481":{"start":{"line":482,"column":0},"end":{"line":482,"column":4}},"482":{"start":{"line":483,"column":0},"end":{"line":483,"column":3}},"483":{"start":{"line":484,"column":0},"end":{"line":484,"column":15}},"484":{"start":{"line":485,"column":0},"end":{"line":485,"column":25}},"485":{"start":{"line":486,"column":0},"end":{"line":486,"column":14}},"486":{"start":{"line":487,"column":0},"end":{"line":487,"column":7}},"487":{"start":{"line":488,"column":0},"end":{"line":488,"column":31}},"488":{"start":{"line":489,"column":0},"end":{"line":489,"column":23}},"489":{"start":{"line":490,"column":0},"end":{"line":490,"column":22}},"490":{"start":{"line":491,"column":0},"end":{"line":491,"column":8}},"491":{"start":{"line":492,"column":0},"end":{"line":492,"column":7}},"492":{"start":{"line":493,"column":0},"end":{"line":493,"column":31}},"493":{"start":{"line":494,"column":0},"end":{"line":494,"column":21}},"494":{"start":{"line":495,"column":0},"end":{"line":495,"column":22}},"495":{"start":{"line":496,"column":0},"end":{"line":496,"column":8}},"496":{"start":{"line":497,"column":0},"end":{"line":497,"column":7}},"497":{"start":{"line":498,"column":0},"end":{"line":498,"column":31}},"498":{"start":{"line":499,"column":0},"end":{"line":499,"column":24}},"499":{"start":{"line":500,"column":0},"end":{"line":500,"column":22}},"500":{"start":{"line":501,"column":0},"end":{"line":501,"column":8}},"501":{"start":{"line":502,"column":0},"end":{"line":502,"column":7}},"502":{"start":{"line":503,"column":0},"end":{"line":503,"column":32}},"503":{"start":{"line":504,"column":0},"end":{"line":504,"column":24}},"504":{"start":{"line":505,"column":0},"end":{"line":505,"column":23}},"505":{"start":{"line":506,"column":0},"end":{"line":506,"column":8}},"506":{"start":{"line":507,"column":0},"end":{"line":507,"column":7}},"507":{"start":{"line":508,"column":0},"end":{"line":508,"column":32}},"508":{"start":{"line":509,"column":0},"end":{"line":509,"column":34}},"509":{"start":{"line":510,"column":0},"end":{"line":510,"column":23}},"510":{"start":{"line":511,"column":0},"end":{"line":511,"column":8}},"511":{"start":{"line":512,"column":0},"end":{"line":512,"column":7}},"512":{"start":{"line":513,"column":0},"end":{"line":513,"column":32}},"513":{"start":{"line":514,"column":0},"end":{"line":514,"column":21}},"514":{"start":{"line":515,"column":0},"end":{"line":515,"column":23}},"515":{"start":{"line":516,"column":0},"end":{"line":516,"column":8}},"516":{"start":{"line":517,"column":0},"end":{"line":517,"column":7}},"517":{"start":{"line":518,"column":0},"end":{"line":518,"column":34}},"518":{"start":{"line":519,"column":0},"end":{"line":519,"column":27}},"519":{"start":{"line":520,"column":0},"end":{"line":520,"column":25}},"520":{"start":{"line":521,"column":0},"end":{"line":521,"column":7}},"521":{"start":{"line":522,"column":0},"end":{"line":522,"column":6}},"522":{"start":{"line":523,"column":0},"end":{"line":523,"column":28}},"523":{"start":{"line":524,"column":0},"end":{"line":524,"column":20}},"524":{"start":{"line":525,"column":0},"end":{"line":525,"column":4}},"525":{"start":{"line":526,"column":0},"end":{"line":526,"column":3}},"526":{"start":{"line":527,"column":0},"end":{"line":527,"column":15}},"527":{"start":{"line":528,"column":0},"end":{"line":528,"column":23}},"528":{"start":{"line":529,"column":0},"end":{"line":529,"column":14}},"529":{"start":{"line":530,"column":0},"end":{"line":530,"column":7}},"530":{"start":{"line":531,"column":0},"end":{"line":531,"column":32}},"531":{"start":{"line":532,"column":0},"end":{"line":532,"column":17}},"532":{"start":{"line":533,"column":0},"end":{"line":533,"column":23}},"533":{"start":{"line":534,"column":0},"end":{"line":534,"column":7}},"534":{"start":{"line":535,"column":0},"end":{"line":535,"column":6}},"535":{"start":{"line":536,"column":0},"end":{"line":536,"column":28}},"536":{"start":{"line":537,"column":0},"end":{"line":537,"column":20}},"537":{"start":{"line":538,"column":0},"end":{"line":538,"column":4}},"538":{"start":{"line":539,"column":0},"end":{"line":539,"column":3}},"539":{"start":{"line":540,"column":0},"end":{"line":540,"column":13}},"540":{"start":{"line":541,"column":0},"end":{"line":541,"column":7}},"541":{"start":{"line":542,"column":0},"end":{"line":542,"column":38}},"542":{"start":{"line":543,"column":0},"end":{"line":543,"column":21}},"543":{"start":{"line":544,"column":0},"end":{"line":544,"column":23}},"544":{"start":{"line":545,"column":0},"end":{"line":545,"column":8}},"545":{"start":{"line":546,"column":0},"end":{"line":546,"column":7}},"546":{"start":{"line":547,"column":0},"end":{"line":547,"column":30}},"547":{"start":{"line":548,"column":0},"end":{"line":548,"column":34}},"548":{"start":{"line":549,"column":0},"end":{"line":549,"column":21}},"549":{"start":{"line":550,"column":0},"end":{"line":550,"column":7}},"550":{"start":{"line":551,"column":0},"end":{"line":551,"column":6}},"551":{"start":{"line":552,"column":0},"end":{"line":552,"column":20}},"552":{"start":{"line":553,"column":0},"end":{"line":553,"column":16}},"553":{"start":{"line":554,"column":0},"end":{"line":554,"column":31}},"554":{"start":{"line":555,"column":0},"end":{"line":555,"column":20}},"555":{"start":{"line":556,"column":0},"end":{"line":556,"column":4}},"556":{"start":{"line":557,"column":0},"end":{"line":557,"column":3}},"557":{"start":{"line":558,"column":0},"end":{"line":558,"column":13}},"558":{"start":{"line":559,"column":0},"end":{"line":559,"column":7}},"559":{"start":{"line":560,"column":0},"end":{"line":560,"column":38}},"560":{"start":{"line":561,"column":0},"end":{"line":561,"column":21}},"561":{"start":{"line":562,"column":0},"end":{"line":562,"column":23}},"562":{"start":{"line":563,"column":0},"end":{"line":563,"column":8}},"563":{"start":{"line":564,"column":0},"end":{"line":564,"column":7}},"564":{"start":{"line":565,"column":0},"end":{"line":565,"column":30}},"565":{"start":{"line":566,"column":0},"end":{"line":566,"column":34}},"566":{"start":{"line":567,"column":0},"end":{"line":567,"column":21}},"567":{"start":{"line":568,"column":0},"end":{"line":568,"column":7}},"568":{"start":{"line":569,"column":0},"end":{"line":569,"column":6}},"569":{"start":{"line":570,"column":0},"end":{"line":570,"column":32}},"570":{"start":{"line":571,"column":0},"end":{"line":571,"column":14}},"571":{"start":{"line":572,"column":0},"end":{"line":572,"column":7}},"572":{"start":{"line":573,"column":0},"end":{"line":573,"column":32}},"573":{"start":{"line":574,"column":0},"end":{"line":574,"column":27}},"574":{"start":{"line":575,"column":0},"end":{"line":575,"column":23}},"575":{"start":{"line":576,"column":0},"end":{"line":576,"column":7}},"576":{"start":{"line":577,"column":0},"end":{"line":577,"column":6}},"577":{"start":{"line":578,"column":0},"end":{"line":578,"column":31}},"578":{"start":{"line":579,"column":0},"end":{"line":579,"column":20}},"579":{"start":{"line":580,"column":0},"end":{"line":580,"column":4}},"580":{"start":{"line":581,"column":0},"end":{"line":581,"column":3}},"581":{"start":{"line":582,"column":0},"end":{"line":582,"column":13}},"582":{"start":{"line":583,"column":0},"end":{"line":583,"column":7}},"583":{"start":{"line":584,"column":0},"end":{"line":584,"column":21}},"584":{"start":{"line":585,"column":0},"end":{"line":585,"column":11}},"585":{"start":{"line":586,"column":0},"end":{"line":586,"column":36}},"586":{"start":{"line":587,"column":0},"end":{"line":587,"column":27}},"587":{"start":{"line":588,"column":0},"end":{"line":588,"column":27}},"588":{"start":{"line":589,"column":0},"end":{"line":589,"column":12}},"589":{"start":{"line":590,"column":0},"end":{"line":590,"column":11}},"590":{"start":{"line":591,"column":0},"end":{"line":591,"column":36}},"591":{"start":{"line":592,"column":0},"end":{"line":592,"column":26}},"592":{"start":{"line":593,"column":0},"end":{"line":593,"column":27}},"593":{"start":{"line":594,"column":0},"end":{"line":594,"column":12}},"594":{"start":{"line":595,"column":0},"end":{"line":595,"column":11}},"595":{"start":{"line":596,"column":0},"end":{"line":596,"column":34}},"596":{"start":{"line":597,"column":0},"end":{"line":597,"column":29}},"597":{"start":{"line":598,"column":0},"end":{"line":598,"column":25}},"598":{"start":{"line":599,"column":0},"end":{"line":599,"column":12}},"599":{"start":{"line":600,"column":0},"end":{"line":600,"column":11}},"600":{"start":{"line":601,"column":0},"end":{"line":601,"column":34}},"601":{"start":{"line":602,"column":0},"end":{"line":602,"column":29}},"602":{"start":{"line":603,"column":0},"end":{"line":603,"column":25}},"603":{"start":{"line":604,"column":0},"end":{"line":604,"column":12}},"604":{"start":{"line":605,"column":0},"end":{"line":605,"column":11}},"605":{"start":{"line":606,"column":0},"end":{"line":606,"column":36}},"606":{"start":{"line":607,"column":0},"end":{"line":607,"column":37}},"607":{"start":{"line":608,"column":0},"end":{"line":608,"column":27}},"608":{"start":{"line":609,"column":0},"end":{"line":609,"column":12}},"609":{"start":{"line":610,"column":0},"end":{"line":610,"column":11}},"610":{"start":{"line":611,"column":0},"end":{"line":611,"column":36}},"611":{"start":{"line":612,"column":0},"end":{"line":612,"column":39}},"612":{"start":{"line":613,"column":0},"end":{"line":613,"column":27}},"613":{"start":{"line":614,"column":0},"end":{"line":614,"column":12}},"614":{"start":{"line":615,"column":0},"end":{"line":615,"column":11}},"615":{"start":{"line":616,"column":0},"end":{"line":616,"column":36}},"616":{"start":{"line":617,"column":0},"end":{"line":617,"column":28}},"617":{"start":{"line":618,"column":0},"end":{"line":618,"column":27}},"618":{"start":{"line":619,"column":0},"end":{"line":619,"column":12}},"619":{"start":{"line":620,"column":0},"end":{"line":620,"column":11}},"620":{"start":{"line":621,"column":0},"end":{"line":621,"column":34}},"621":{"start":{"line":622,"column":0},"end":{"line":622,"column":37}},"622":{"start":{"line":623,"column":0},"end":{"line":623,"column":25}},"623":{"start":{"line":624,"column":0},"end":{"line":624,"column":12}},"624":{"start":{"line":625,"column":0},"end":{"line":625,"column":11}},"625":{"start":{"line":626,"column":0},"end":{"line":626,"column":34}},"626":{"start":{"line":627,"column":0},"end":{"line":627,"column":30}},"627":{"start":{"line":628,"column":0},"end":{"line":628,"column":25}},"628":{"start":{"line":629,"column":0},"end":{"line":629,"column":11}},"629":{"start":{"line":630,"column":0},"end":{"line":630,"column":10}},"630":{"start":{"line":631,"column":0},"end":{"line":631,"column":51}},"631":{"start":{"line":632,"column":0},"end":{"line":632,"column":23}},"632":{"start":{"line":633,"column":0},"end":{"line":633,"column":21}},"633":{"start":{"line":634,"column":0},"end":{"line":634,"column":8}},"634":{"start":{"line":635,"column":0},"end":{"line":635,"column":7}},"635":{"start":{"line":636,"column":0},"end":{"line":636,"column":32}},"636":{"start":{"line":637,"column":0},"end":{"line":637,"column":17}},"637":{"start":{"line":638,"column":0},"end":{"line":638,"column":23}},"638":{"start":{"line":639,"column":0},"end":{"line":639,"column":7}},"639":{"start":{"line":640,"column":0},"end":{"line":640,"column":6}},"640":{"start":{"line":641,"column":0},"end":{"line":641,"column":26}},"641":{"start":{"line":642,"column":0},"end":{"line":642,"column":16}},"642":{"start":{"line":643,"column":0},"end":{"line":643,"column":31}},"643":{"start":{"line":644,"column":0},"end":{"line":644,"column":20}},"644":{"start":{"line":645,"column":0},"end":{"line":645,"column":4}},"645":{"start":{"line":646,"column":0},"end":{"line":646,"column":3}},"646":{"start":{"line":647,"column":0},"end":{"line":647,"column":15}},"647":{"start":{"line":648,"column":0},"end":{"line":648,"column":26}},"648":{"start":{"line":649,"column":0},"end":{"line":649,"column":14}},"649":{"start":{"line":650,"column":0},"end":{"line":650,"column":7}},"650":{"start":{"line":651,"column":0},"end":{"line":651,"column":32}},"651":{"start":{"line":652,"column":0},"end":{"line":652,"column":21}},"652":{"start":{"line":653,"column":0},"end":{"line":653,"column":23}},"653":{"start":{"line":654,"column":0},"end":{"line":654,"column":7}},"654":{"start":{"line":655,"column":0},"end":{"line":655,"column":6}},"655":{"start":{"line":656,"column":0},"end":{"line":656,"column":28}},"656":{"start":{"line":657,"column":0},"end":{"line":657,"column":20}},"657":{"start":{"line":658,"column":0},"end":{"line":658,"column":4}},"658":{"start":{"line":659,"column":0},"end":{"line":659,"column":3}},"659":{"start":{"line":660,"column":0},"end":{"line":660,"column":15}},"660":{"start":{"line":661,"column":0},"end":{"line":661,"column":23}},"661":{"start":{"line":662,"column":0},"end":{"line":662,"column":14}},"662":{"start":{"line":663,"column":0},"end":{"line":663,"column":7}},"663":{"start":{"line":664,"column":0},"end":{"line":664,"column":32}},"664":{"start":{"line":665,"column":0},"end":{"line":665,"column":23}},"665":{"start":{"line":666,"column":0},"end":{"line":666,"column":23}},"666":{"start":{"line":667,"column":0},"end":{"line":667,"column":7}},"667":{"start":{"line":668,"column":0},"end":{"line":668,"column":6}},"668":{"start":{"line":669,"column":0},"end":{"line":669,"column":28}},"669":{"start":{"line":670,"column":0},"end":{"line":670,"column":20}},"670":{"start":{"line":671,"column":0},"end":{"line":671,"column":4}},"671":{"start":{"line":672,"column":0},"end":{"line":672,"column":3}},"672":{"start":{"line":673,"column":0},"end":{"line":673,"column":13}},"673":{"start":{"line":674,"column":0},"end":{"line":674,"column":7}},"674":{"start":{"line":675,"column":0},"end":{"line":675,"column":32}},"675":{"start":{"line":676,"column":0},"end":{"line":676,"column":23}},"676":{"start":{"line":677,"column":0},"end":{"line":677,"column":23}},"677":{"start":{"line":678,"column":0},"end":{"line":678,"column":8}},"678":{"start":{"line":679,"column":0},"end":{"line":679,"column":7}},"679":{"start":{"line":680,"column":0},"end":{"line":680,"column":32}},"680":{"start":{"line":681,"column":0},"end":{"line":681,"column":21}},"681":{"start":{"line":682,"column":0},"end":{"line":682,"column":23}},"682":{"start":{"line":683,"column":0},"end":{"line":683,"column":7}},"683":{"start":{"line":684,"column":0},"end":{"line":684,"column":6}},"684":{"start":{"line":685,"column":0},"end":{"line":685,"column":34}},"685":{"start":{"line":686,"column":0},"end":{"line":686,"column":14}},"686":{"start":{"line":687,"column":0},"end":{"line":687,"column":7}},"687":{"start":{"line":688,"column":0},"end":{"line":688,"column":34}},"688":{"start":{"line":689,"column":0},"end":{"line":689,"column":22}},"689":{"start":{"line":690,"column":0},"end":{"line":690,"column":25}},"690":{"start":{"line":691,"column":0},"end":{"line":691,"column":8}},"691":{"start":{"line":692,"column":0},"end":{"line":692,"column":7}},"692":{"start":{"line":693,"column":0},"end":{"line":693,"column":32}},"693":{"start":{"line":694,"column":0},"end":{"line":694,"column":21}},"694":{"start":{"line":695,"column":0},"end":{"line":695,"column":23}},"695":{"start":{"line":696,"column":0},"end":{"line":696,"column":7}},"696":{"start":{"line":697,"column":0},"end":{"line":697,"column":6}},"697":{"start":{"line":698,"column":0},"end":{"line":698,"column":28}},"698":{"start":{"line":699,"column":0},"end":{"line":699,"column":20}},"699":{"start":{"line":700,"column":0},"end":{"line":700,"column":4}},"700":{"start":{"line":701,"column":0},"end":{"line":701,"column":3}},"701":{"start":{"line":702,"column":0},"end":{"line":702,"column":13}},"702":{"start":{"line":703,"column":0},"end":{"line":703,"column":7}},"703":{"start":{"line":704,"column":0},"end":{"line":704,"column":31}},"704":{"start":{"line":705,"column":0},"end":{"line":705,"column":25}},"705":{"start":{"line":706,"column":0},"end":{"line":706,"column":22}},"706":{"start":{"line":707,"column":0},"end":{"line":707,"column":7}},"707":{"start":{"line":708,"column":0},"end":{"line":708,"column":6}},"708":{"start":{"line":709,"column":0},"end":{"line":709,"column":41}},"709":{"start":{"line":710,"column":0},"end":{"line":710,"column":14}},"710":{"start":{"line":711,"column":0},"end":{"line":711,"column":7}},"711":{"start":{"line":712,"column":0},"end":{"line":712,"column":33}},"712":{"start":{"line":713,"column":0},"end":{"line":713,"column":17}},"713":{"start":{"line":714,"column":0},"end":{"line":714,"column":22}},"714":{"start":{"line":715,"column":0},"end":{"line":715,"column":8}},"715":{"start":{"line":716,"column":0},"end":{"line":716,"column":7}},"716":{"start":{"line":717,"column":0},"end":{"line":717,"column":32}},"717":{"start":{"line":718,"column":0},"end":{"line":718,"column":17}},"718":{"start":{"line":719,"column":0},"end":{"line":719,"column":23}},"719":{"start":{"line":720,"column":0},"end":{"line":720,"column":7}},"720":{"start":{"line":721,"column":0},"end":{"line":721,"column":6}},"721":{"start":{"line":722,"column":0},"end":{"line":722,"column":28}},"722":{"start":{"line":723,"column":0},"end":{"line":723,"column":20}},"723":{"start":{"line":724,"column":0},"end":{"line":724,"column":4}},"724":{"start":{"line":725,"column":0},"end":{"line":725,"column":3}},"725":{"start":{"line":726,"column":0},"end":{"line":726,"column":15}},"726":{"start":{"line":727,"column":0},"end":{"line":727,"column":30}},"727":{"start":{"line":728,"column":0},"end":{"line":728,"column":14}},"728":{"start":{"line":729,"column":0},"end":{"line":729,"column":7}},"729":{"start":{"line":730,"column":0},"end":{"line":730,"column":32}},"730":{"start":{"line":731,"column":0},"end":{"line":731,"column":31}},"731":{"start":{"line":732,"column":0},"end":{"line":732,"column":23}},"732":{"start":{"line":733,"column":0},"end":{"line":733,"column":7}},"733":{"start":{"line":734,"column":0},"end":{"line":734,"column":6}},"734":{"start":{"line":735,"column":0},"end":{"line":735,"column":28}},"735":{"start":{"line":736,"column":0},"end":{"line":736,"column":20}},"736":{"start":{"line":737,"column":0},"end":{"line":737,"column":4}},"737":{"start":{"line":738,"column":0},"end":{"line":738,"column":3}},"738":{"start":{"line":739,"column":0},"end":{"line":739,"column":13}},"739":{"start":{"line":740,"column":0},"end":{"line":740,"column":7}},"740":{"start":{"line":741,"column":0},"end":{"line":741,"column":32}},"741":{"start":{"line":742,"column":0},"end":{"line":742,"column":23}},"742":{"start":{"line":743,"column":0},"end":{"line":743,"column":23}},"743":{"start":{"line":744,"column":0},"end":{"line":744,"column":8}},"744":{"start":{"line":745,"column":0},"end":{"line":745,"column":7}},"745":{"start":{"line":746,"column":0},"end":{"line":746,"column":32}},"746":{"start":{"line":747,"column":0},"end":{"line":747,"column":21}},"747":{"start":{"line":748,"column":0},"end":{"line":748,"column":23}},"748":{"start":{"line":749,"column":0},"end":{"line":749,"column":7}},"749":{"start":{"line":750,"column":0},"end":{"line":750,"column":6}},"750":{"start":{"line":751,"column":0},"end":{"line":751,"column":35}},"751":{"start":{"line":752,"column":0},"end":{"line":752,"column":14}},"752":{"start":{"line":753,"column":0},"end":{"line":753,"column":7}},"753":{"start":{"line":754,"column":0},"end":{"line":754,"column":34}},"754":{"start":{"line":755,"column":0},"end":{"line":755,"column":22}},"755":{"start":{"line":756,"column":0},"end":{"line":756,"column":25}},"756":{"start":{"line":757,"column":0},"end":{"line":757,"column":8}},"757":{"start":{"line":758,"column":0},"end":{"line":758,"column":7}},"758":{"start":{"line":759,"column":0},"end":{"line":759,"column":32}},"759":{"start":{"line":760,"column":0},"end":{"line":760,"column":21}},"760":{"start":{"line":761,"column":0},"end":{"line":761,"column":23}},"761":{"start":{"line":762,"column":0},"end":{"line":762,"column":7}},"762":{"start":{"line":763,"column":0},"end":{"line":763,"column":6}},"763":{"start":{"line":764,"column":0},"end":{"line":764,"column":28}},"764":{"start":{"line":765,"column":0},"end":{"line":765,"column":20}},"765":{"start":{"line":766,"column":0},"end":{"line":766,"column":4}},"766":{"start":{"line":767,"column":0},"end":{"line":767,"column":3}},"767":{"start":{"line":768,"column":0},"end":{"line":768,"column":13}},"768":{"start":{"line":769,"column":0},"end":{"line":769,"column":7}},"769":{"start":{"line":770,"column":0},"end":{"line":770,"column":32}},"770":{"start":{"line":771,"column":0},"end":{"line":771,"column":27}},"771":{"start":{"line":772,"column":0},"end":{"line":772,"column":23}},"772":{"start":{"line":773,"column":0},"end":{"line":773,"column":7}},"773":{"start":{"line":774,"column":0},"end":{"line":774,"column":6}},"774":{"start":{"line":775,"column":0},"end":{"line":775,"column":26}},"775":{"start":{"line":776,"column":0},"end":{"line":776,"column":14}},"776":{"start":{"line":777,"column":0},"end":{"line":777,"column":7}},"777":{"start":{"line":778,"column":0},"end":{"line":778,"column":32}},"778":{"start":{"line":779,"column":0},"end":{"line":779,"column":17}},"779":{"start":{"line":780,"column":0},"end":{"line":780,"column":23}},"780":{"start":{"line":781,"column":0},"end":{"line":781,"column":7}},"781":{"start":{"line":782,"column":0},"end":{"line":782,"column":6}},"782":{"start":{"line":783,"column":0},"end":{"line":783,"column":28}},"783":{"start":{"line":784,"column":0},"end":{"line":784,"column":20}},"784":{"start":{"line":785,"column":0},"end":{"line":785,"column":4}},"785":{"start":{"line":786,"column":0},"end":{"line":786,"column":3}},"786":{"start":{"line":787,"column":0},"end":{"line":787,"column":13}},"787":{"start":{"line":788,"column":0},"end":{"line":788,"column":7}},"788":{"start":{"line":789,"column":0},"end":{"line":789,"column":30}},"789":{"start":{"line":790,"column":0},"end":{"line":790,"column":25}},"790":{"start":{"line":791,"column":0},"end":{"line":791,"column":21}},"791":{"start":{"line":792,"column":0},"end":{"line":792,"column":7}},"792":{"start":{"line":793,"column":0},"end":{"line":793,"column":6}},"793":{"start":{"line":794,"column":0},"end":{"line":794,"column":30}},"794":{"start":{"line":795,"column":0},"end":{"line":795,"column":16}},"795":{"start":{"line":796,"column":0},"end":{"line":796,"column":31}},"796":{"start":{"line":797,"column":0},"end":{"line":797,"column":20}},"797":{"start":{"line":798,"column":0},"end":{"line":798,"column":4}},"798":{"start":{"line":799,"column":0},"end":{"line":799,"column":3}},"799":{"start":{"line":800,"column":0},"end":{"line":800,"column":13}},"800":{"start":{"line":801,"column":0},"end":{"line":801,"column":7}},"801":{"start":{"line":802,"column":0},"end":{"line":802,"column":32}},"802":{"start":{"line":803,"column":0},"end":{"line":803,"column":29}},"803":{"start":{"line":804,"column":0},"end":{"line":804,"column":23}},"804":{"start":{"line":805,"column":0},"end":{"line":805,"column":8}},"805":{"start":{"line":806,"column":0},"end":{"line":806,"column":7}},"806":{"start":{"line":807,"column":0},"end":{"line":807,"column":32}},"807":{"start":{"line":808,"column":0},"end":{"line":808,"column":23}},"808":{"start":{"line":809,"column":0},"end":{"line":809,"column":23}},"809":{"start":{"line":810,"column":0},"end":{"line":810,"column":8}},"810":{"start":{"line":811,"column":0},"end":{"line":811,"column":7}},"811":{"start":{"line":812,"column":0},"end":{"line":812,"column":30}},"812":{"start":{"line":813,"column":0},"end":{"line":813,"column":25}},"813":{"start":{"line":814,"column":0},"end":{"line":814,"column":21}},"814":{"start":{"line":815,"column":0},"end":{"line":815,"column":7}},"815":{"start":{"line":816,"column":0},"end":{"line":816,"column":6}},"816":{"start":{"line":817,"column":0},"end":{"line":817,"column":26}},"817":{"start":{"line":818,"column":0},"end":{"line":818,"column":16}},"818":{"start":{"line":819,"column":0},"end":{"line":819,"column":31}},"819":{"start":{"line":820,"column":0},"end":{"line":820,"column":20}},"820":{"start":{"line":821,"column":0},"end":{"line":821,"column":4}},"821":{"start":{"line":822,"column":0},"end":{"line":822,"column":3}},"822":{"start":{"line":823,"column":0},"end":{"line":823,"column":13}},"823":{"start":{"line":824,"column":0},"end":{"line":824,"column":7}},"824":{"start":{"line":825,"column":0},"end":{"line":825,"column":32}},"825":{"start":{"line":826,"column":0},"end":{"line":826,"column":29}},"826":{"start":{"line":827,"column":0},"end":{"line":827,"column":23}},"827":{"start":{"line":828,"column":0},"end":{"line":828,"column":8}},"828":{"start":{"line":829,"column":0},"end":{"line":829,"column":7}},"829":{"start":{"line":830,"column":0},"end":{"line":830,"column":32}},"830":{"start":{"line":831,"column":0},"end":{"line":831,"column":23}},"831":{"start":{"line":832,"column":0},"end":{"line":832,"column":23}},"832":{"start":{"line":833,"column":0},"end":{"line":833,"column":8}},"833":{"start":{"line":834,"column":0},"end":{"line":834,"column":7}},"834":{"start":{"line":835,"column":0},"end":{"line":835,"column":30}},"835":{"start":{"line":836,"column":0},"end":{"line":836,"column":34}},"836":{"start":{"line":837,"column":0},"end":{"line":837,"column":21}},"837":{"start":{"line":838,"column":0},"end":{"line":838,"column":7}},"838":{"start":{"line":839,"column":0},"end":{"line":839,"column":6}},"839":{"start":{"line":840,"column":0},"end":{"line":840,"column":30}},"840":{"start":{"line":841,"column":0},"end":{"line":841,"column":14}},"841":{"start":{"line":842,"column":0},"end":{"line":842,"column":7}},"842":{"start":{"line":843,"column":0},"end":{"line":843,"column":29}},"843":{"start":{"line":844,"column":0},"end":{"line":844,"column":17}},"844":{"start":{"line":845,"column":0},"end":{"line":845,"column":20}},"845":{"start":{"line":846,"column":0},"end":{"line":846,"column":7}},"846":{"start":{"line":847,"column":0},"end":{"line":847,"column":6}},"847":{"start":{"line":848,"column":0},"end":{"line":848,"column":28}},"848":{"start":{"line":849,"column":0},"end":{"line":849,"column":20}},"849":{"start":{"line":850,"column":0},"end":{"line":850,"column":4}},"850":{"start":{"line":851,"column":0},"end":{"line":851,"column":3}},"851":{"start":{"line":852,"column":0},"end":{"line":852,"column":13}},"852":{"start":{"line":853,"column":0},"end":{"line":853,"column":7}},"853":{"start":{"line":854,"column":0},"end":{"line":854,"column":32}},"854":{"start":{"line":855,"column":0},"end":{"line":855,"column":21}},"855":{"start":{"line":856,"column":0},"end":{"line":856,"column":23}},"856":{"start":{"line":857,"column":0},"end":{"line":857,"column":8}},"857":{"start":{"line":858,"column":0},"end":{"line":858,"column":7}},"858":{"start":{"line":859,"column":0},"end":{"line":859,"column":30}},"859":{"start":{"line":860,"column":0},"end":{"line":860,"column":21}},"860":{"start":{"line":861,"column":0},"end":{"line":861,"column":21}},"861":{"start":{"line":862,"column":0},"end":{"line":862,"column":7}},"862":{"start":{"line":863,"column":0},"end":{"line":863,"column":6}},"863":{"start":{"line":864,"column":0},"end":{"line":864,"column":29}},"864":{"start":{"line":865,"column":0},"end":{"line":865,"column":14}},"865":{"start":{"line":866,"column":0},"end":{"line":866,"column":7}},"866":{"start":{"line":867,"column":0},"end":{"line":867,"column":31}},"867":{"start":{"line":868,"column":0},"end":{"line":868,"column":17}},"868":{"start":{"line":869,"column":0},"end":{"line":869,"column":22}},"869":{"start":{"line":870,"column":0},"end":{"line":870,"column":7}},"870":{"start":{"line":871,"column":0},"end":{"line":871,"column":6}},"871":{"start":{"line":872,"column":0},"end":{"line":872,"column":28}},"872":{"start":{"line":873,"column":0},"end":{"line":873,"column":20}},"873":{"start":{"line":874,"column":0},"end":{"line":874,"column":4}},"874":{"start":{"line":875,"column":0},"end":{"line":875,"column":3}},"875":{"start":{"line":876,"column":0},"end":{"line":876,"column":13}},"876":{"start":{"line":877,"column":0},"end":{"line":877,"column":7}},"877":{"start":{"line":878,"column":0},"end":{"line":878,"column":32}},"878":{"start":{"line":879,"column":0},"end":{"line":879,"column":20}},"879":{"start":{"line":880,"column":0},"end":{"line":880,"column":23}},"880":{"start":{"line":881,"column":0},"end":{"line":881,"column":7}},"881":{"start":{"line":882,"column":0},"end":{"line":882,"column":6}},"882":{"start":{"line":883,"column":0},"end":{"line":883,"column":18}},"883":{"start":{"line":884,"column":0},"end":{"line":884,"column":14}},"884":{"start":{"line":885,"column":0},"end":{"line":885,"column":7}},"885":{"start":{"line":886,"column":0},"end":{"line":886,"column":32}},"886":{"start":{"line":887,"column":0},"end":{"line":887,"column":17}},"887":{"start":{"line":888,"column":0},"end":{"line":888,"column":23}},"888":{"start":{"line":889,"column":0},"end":{"line":889,"column":7}},"889":{"start":{"line":890,"column":0},"end":{"line":890,"column":6}},"890":{"start":{"line":891,"column":0},"end":{"line":891,"column":28}},"891":{"start":{"line":892,"column":0},"end":{"line":892,"column":20}},"892":{"start":{"line":893,"column":0},"end":{"line":893,"column":4}},"893":{"start":{"line":894,"column":0},"end":{"line":894,"column":3}},"894":{"start":{"line":895,"column":0},"end":{"line":895,"column":15}},"895":{"start":{"line":896,"column":0},"end":{"line":896,"column":26}},"896":{"start":{"line":897,"column":0},"end":{"line":897,"column":14}},"897":{"start":{"line":898,"column":0},"end":{"line":898,"column":7}},"898":{"start":{"line":899,"column":0},"end":{"line":899,"column":32}},"899":{"start":{"line":900,"column":0},"end":{"line":900,"column":17}},"900":{"start":{"line":901,"column":0},"end":{"line":901,"column":23}},"901":{"start":{"line":902,"column":0},"end":{"line":902,"column":7}},"902":{"start":{"line":903,"column":0},"end":{"line":903,"column":6}},"903":{"start":{"line":904,"column":0},"end":{"line":904,"column":28}},"904":{"start":{"line":905,"column":0},"end":{"line":905,"column":20}},"905":{"start":{"line":906,"column":0},"end":{"line":906,"column":4}},"906":{"start":{"line":907,"column":0},"end":{"line":907,"column":3}},"907":{"start":{"line":908,"column":0},"end":{"line":908,"column":15}},"908":{"start":{"line":909,"column":0},"end":{"line":909,"column":21}},"909":{"start":{"line":910,"column":0},"end":{"line":910,"column":14}},"910":{"start":{"line":911,"column":0},"end":{"line":911,"column":7}},"911":{"start":{"line":912,"column":0},"end":{"line":912,"column":42}},"912":{"start":{"line":913,"column":0},"end":{"line":913,"column":17}},"913":{"start":{"line":914,"column":0},"end":{"line":914,"column":23}},"914":{"start":{"line":915,"column":0},"end":{"line":915,"column":7}},"915":{"start":{"line":916,"column":0},"end":{"line":916,"column":6}},"916":{"start":{"line":917,"column":0},"end":{"line":917,"column":28}},"917":{"start":{"line":918,"column":0},"end":{"line":918,"column":20}},"918":{"start":{"line":919,"column":0},"end":{"line":919,"column":4}},"919":{"start":{"line":920,"column":0},"end":{"line":920,"column":3}},"920":{"start":{"line":921,"column":0},"end":{"line":921,"column":13}},"921":{"start":{"line":922,"column":0},"end":{"line":922,"column":7}},"922":{"start":{"line":923,"column":0},"end":{"line":923,"column":42}},"923":{"start":{"line":924,"column":0},"end":{"line":924,"column":28}},"924":{"start":{"line":925,"column":0},"end":{"line":925,"column":23}},"925":{"start":{"line":926,"column":0},"end":{"line":926,"column":8}},"926":{"start":{"line":927,"column":0},"end":{"line":927,"column":7}},"927":{"start":{"line":928,"column":0},"end":{"line":928,"column":34}},"928":{"start":{"line":929,"column":0},"end":{"line":929,"column":26}},"929":{"start":{"line":930,"column":0},"end":{"line":930,"column":25}},"930":{"start":{"line":931,"column":0},"end":{"line":931,"column":8}},"931":{"start":{"line":932,"column":0},"end":{"line":932,"column":7}},"932":{"start":{"line":933,"column":0},"end":{"line":933,"column":30}},"933":{"start":{"line":934,"column":0},"end":{"line":934,"column":26}},"934":{"start":{"line":935,"column":0},"end":{"line":935,"column":21}},"935":{"start":{"line":936,"column":0},"end":{"line":936,"column":7}},"936":{"start":{"line":937,"column":0},"end":{"line":937,"column":6}},"937":{"start":{"line":938,"column":0},"end":{"line":938,"column":24}},"938":{"start":{"line":939,"column":0},"end":{"line":939,"column":16}},"939":{"start":{"line":940,"column":0},"end":{"line":940,"column":34}},"940":{"start":{"line":941,"column":0},"end":{"line":941,"column":20}},"941":{"start":{"line":942,"column":0},"end":{"line":942,"column":4}},"942":{"start":{"line":943,"column":0},"end":{"line":943,"column":3}},"943":{"start":{"line":944,"column":0},"end":{"line":944,"column":13}},"944":{"start":{"line":945,"column":0},"end":{"line":945,"column":7}},"945":{"start":{"line":946,"column":0},"end":{"line":946,"column":38}},"946":{"start":{"line":947,"column":0},"end":{"line":947,"column":21}},"947":{"start":{"line":948,"column":0},"end":{"line":948,"column":23}},"948":{"start":{"line":949,"column":0},"end":{"line":949,"column":7}},"949":{"start":{"line":950,"column":0},"end":{"line":950,"column":6}},"950":{"start":{"line":951,"column":0},"end":{"line":951,"column":34}},"951":{"start":{"line":952,"column":0},"end":{"line":952,"column":14}},"952":{"start":{"line":953,"column":0},"end":{"line":953,"column":7}},"953":{"start":{"line":954,"column":0},"end":{"line":954,"column":29}},"954":{"start":{"line":955,"column":0},"end":{"line":955,"column":28}},"955":{"start":{"line":956,"column":0},"end":{"line":956,"column":20}},"956":{"start":{"line":957,"column":0},"end":{"line":957,"column":7}},"957":{"start":{"line":958,"column":0},"end":{"line":958,"column":6}},"958":{"start":{"line":959,"column":0},"end":{"line":959,"column":28}},"959":{"start":{"line":960,"column":0},"end":{"line":960,"column":20}},"960":{"start":{"line":961,"column":0},"end":{"line":961,"column":4}},"961":{"start":{"line":962,"column":0},"end":{"line":962,"column":3}},"962":{"start":{"line":963,"column":0},"end":{"line":963,"column":13}},"963":{"start":{"line":964,"column":0},"end":{"line":964,"column":7}},"964":{"start":{"line":965,"column":0},"end":{"line":965,"column":32}},"965":{"start":{"line":966,"column":0},"end":{"line":966,"column":29}},"966":{"start":{"line":967,"column":0},"end":{"line":967,"column":23}},"967":{"start":{"line":968,"column":0},"end":{"line":968,"column":7}},"968":{"start":{"line":969,"column":0},"end":{"line":969,"column":6}},"969":{"start":{"line":970,"column":0},"end":{"line":970,"column":27}},"970":{"start":{"line":971,"column":0},"end":{"line":971,"column":14}},"971":{"start":{"line":972,"column":0},"end":{"line":972,"column":7}},"972":{"start":{"line":973,"column":0},"end":{"line":973,"column":29}},"973":{"start":{"line":974,"column":0},"end":{"line":974,"column":17}},"974":{"start":{"line":975,"column":0},"end":{"line":975,"column":20}},"975":{"start":{"line":976,"column":0},"end":{"line":976,"column":7}},"976":{"start":{"line":977,"column":0},"end":{"line":977,"column":6}},"977":{"start":{"line":978,"column":0},"end":{"line":978,"column":28}},"978":{"start":{"line":979,"column":0},"end":{"line":979,"column":20}},"979":{"start":{"line":980,"column":0},"end":{"line":980,"column":4}},"980":{"start":{"line":981,"column":0},"end":{"line":981,"column":3}},"981":{"start":{"line":982,"column":0},"end":{"line":982,"column":15}},"982":{"start":{"line":983,"column":0},"end":{"line":983,"column":40}},"983":{"start":{"line":984,"column":0},"end":{"line":984,"column":14}},"984":{"start":{"line":985,"column":0},"end":{"line":985,"column":7}},"985":{"start":{"line":986,"column":0},"end":{"line":986,"column":32}},"986":{"start":{"line":987,"column":0},"end":{"line":987,"column":23}},"987":{"start":{"line":988,"column":0},"end":{"line":988,"column":23}},"988":{"start":{"line":989,"column":0},"end":{"line":989,"column":7}},"989":{"start":{"line":990,"column":0},"end":{"line":990,"column":6}},"990":{"start":{"line":991,"column":0},"end":{"line":991,"column":28}},"991":{"start":{"line":992,"column":0},"end":{"line":992,"column":20}},"992":{"start":{"line":993,"column":0},"end":{"line":993,"column":4}},"993":{"start":{"line":994,"column":0},"end":{"line":994,"column":3}},"994":{"start":{"line":995,"column":0},"end":{"line":995,"column":13}},"995":{"start":{"line":996,"column":0},"end":{"line":996,"column":7}},"996":{"start":{"line":997,"column":0},"end":{"line":997,"column":32}},"997":{"start":{"line":998,"column":0},"end":{"line":998,"column":29}},"998":{"start":{"line":999,"column":0},"end":{"line":999,"column":23}},"999":{"start":{"line":1000,"column":0},"end":{"line":1000,"column":8}},"1000":{"start":{"line":1001,"column":0},"end":{"line":1001,"column":7}},"1001":{"start":{"line":1002,"column":0},"end":{"line":1002,"column":32}},"1002":{"start":{"line":1003,"column":0},"end":{"line":1003,"column":23}},"1003":{"start":{"line":1004,"column":0},"end":{"line":1004,"column":23}},"1004":{"start":{"line":1005,"column":0},"end":{"line":1005,"column":8}},"1005":{"start":{"line":1006,"column":0},"end":{"line":1006,"column":7}},"1006":{"start":{"line":1007,"column":0},"end":{"line":1007,"column":30}},"1007":{"start":{"line":1008,"column":0},"end":{"line":1008,"column":27}},"1008":{"start":{"line":1009,"column":0},"end":{"line":1009,"column":21}},"1009":{"start":{"line":1010,"column":0},"end":{"line":1010,"column":7}},"1010":{"start":{"line":1011,"column":0},"end":{"line":1011,"column":6}},"1011":{"start":{"line":1012,"column":0},"end":{"line":1012,"column":28}},"1012":{"start":{"line":1013,"column":0},"end":{"line":1013,"column":16}},"1013":{"start":{"line":1014,"column":0},"end":{"line":1014,"column":31}},"1014":{"start":{"line":1015,"column":0},"end":{"line":1015,"column":20}},"1015":{"start":{"line":1016,"column":0},"end":{"line":1016,"column":4}},"1016":{"start":{"line":1017,"column":0},"end":{"line":1017,"column":3}},"1017":{"start":{"line":1018,"column":0},"end":{"line":1018,"column":13}},"1018":{"start":{"line":1019,"column":0},"end":{"line":1019,"column":7}},"1019":{"start":{"line":1020,"column":0},"end":{"line":1020,"column":32}},"1020":{"start":{"line":1021,"column":0},"end":{"line":1021,"column":34}},"1021":{"start":{"line":1022,"column":0},"end":{"line":1022,"column":23}},"1022":{"start":{"line":1023,"column":0},"end":{"line":1023,"column":8}},"1023":{"start":{"line":1024,"column":0},"end":{"line":1024,"column":7}},"1024":{"start":{"line":1025,"column":0},"end":{"line":1025,"column":30}},"1025":{"start":{"line":1026,"column":0},"end":{"line":1026,"column":21}},"1026":{"start":{"line":1027,"column":0},"end":{"line":1027,"column":21}},"1027":{"start":{"line":1028,"column":0},"end":{"line":1028,"column":7}},"1028":{"start":{"line":1029,"column":0},"end":{"line":1029,"column":6}},"1029":{"start":{"line":1030,"column":0},"end":{"line":1030,"column":29}},"1030":{"start":{"line":1031,"column":0},"end":{"line":1031,"column":16}},"1031":{"start":{"line":1032,"column":0},"end":{"line":1032,"column":31}},"1032":{"start":{"line":1033,"column":0},"end":{"line":1033,"column":20}},"1033":{"start":{"line":1034,"column":0},"end":{"line":1034,"column":4}},"1034":{"start":{"line":1035,"column":0},"end":{"line":1035,"column":3}},"1035":{"start":{"line":1036,"column":0},"end":{"line":1036,"column":13}},"1036":{"start":{"line":1037,"column":0},"end":{"line":1037,"column":7}},"1037":{"start":{"line":1038,"column":0},"end":{"line":1038,"column":21}},"1038":{"start":{"line":1039,"column":0},"end":{"line":1039,"column":11}},"1039":{"start":{"line":1040,"column":0},"end":{"line":1040,"column":36}},"1040":{"start":{"line":1041,"column":0},"end":{"line":1041,"column":27}},"1041":{"start":{"line":1042,"column":0},"end":{"line":1042,"column":27}},"1042":{"start":{"line":1043,"column":0},"end":{"line":1043,"column":12}},"1043":{"start":{"line":1044,"column":0},"end":{"line":1044,"column":11}},"1044":{"start":{"line":1045,"column":0},"end":{"line":1045,"column":36}},"1045":{"start":{"line":1046,"column":0},"end":{"line":1046,"column":26}},"1046":{"start":{"line":1047,"column":0},"end":{"line":1047,"column":27}},"1047":{"start":{"line":1048,"column":0},"end":{"line":1048,"column":12}},"1048":{"start":{"line":1049,"column":0},"end":{"line":1049,"column":11}},"1049":{"start":{"line":1050,"column":0},"end":{"line":1050,"column":34}},"1050":{"start":{"line":1051,"column":0},"end":{"line":1051,"column":29}},"1051":{"start":{"line":1052,"column":0},"end":{"line":1052,"column":25}},"1052":{"start":{"line":1053,"column":0},"end":{"line":1053,"column":12}},"1053":{"start":{"line":1054,"column":0},"end":{"line":1054,"column":11}},"1054":{"start":{"line":1055,"column":0},"end":{"line":1055,"column":34}},"1055":{"start":{"line":1056,"column":0},"end":{"line":1056,"column":29}},"1056":{"start":{"line":1057,"column":0},"end":{"line":1057,"column":25}},"1057":{"start":{"line":1058,"column":0},"end":{"line":1058,"column":12}},"1058":{"start":{"line":1059,"column":0},"end":{"line":1059,"column":11}},"1059":{"start":{"line":1060,"column":0},"end":{"line":1060,"column":36}},"1060":{"start":{"line":1061,"column":0},"end":{"line":1061,"column":37}},"1061":{"start":{"line":1062,"column":0},"end":{"line":1062,"column":27}},"1062":{"start":{"line":1063,"column":0},"end":{"line":1063,"column":12}},"1063":{"start":{"line":1064,"column":0},"end":{"line":1064,"column":11}},"1064":{"start":{"line":1065,"column":0},"end":{"line":1065,"column":36}},"1065":{"start":{"line":1066,"column":0},"end":{"line":1066,"column":39}},"1066":{"start":{"line":1067,"column":0},"end":{"line":1067,"column":27}},"1067":{"start":{"line":1068,"column":0},"end":{"line":1068,"column":12}},"1068":{"start":{"line":1069,"column":0},"end":{"line":1069,"column":11}},"1069":{"start":{"line":1070,"column":0},"end":{"line":1070,"column":36}},"1070":{"start":{"line":1071,"column":0},"end":{"line":1071,"column":28}},"1071":{"start":{"line":1072,"column":0},"end":{"line":1072,"column":27}},"1072":{"start":{"line":1073,"column":0},"end":{"line":1073,"column":12}},"1073":{"start":{"line":1074,"column":0},"end":{"line":1074,"column":11}},"1074":{"start":{"line":1075,"column":0},"end":{"line":1075,"column":34}},"1075":{"start":{"line":1076,"column":0},"end":{"line":1076,"column":37}},"1076":{"start":{"line":1077,"column":0},"end":{"line":1077,"column":25}},"1077":{"start":{"line":1078,"column":0},"end":{"line":1078,"column":12}},"1078":{"start":{"line":1079,"column":0},"end":{"line":1079,"column":11}},"1079":{"start":{"line":1080,"column":0},"end":{"line":1080,"column":34}},"1080":{"start":{"line":1081,"column":0},"end":{"line":1081,"column":30}},"1081":{"start":{"line":1082,"column":0},"end":{"line":1082,"column":25}},"1082":{"start":{"line":1083,"column":0},"end":{"line":1083,"column":11}},"1083":{"start":{"line":1084,"column":0},"end":{"line":1084,"column":10}},"1084":{"start":{"line":1085,"column":0},"end":{"line":1085,"column":51}},"1085":{"start":{"line":1086,"column":0},"end":{"line":1086,"column":19}},"1086":{"start":{"line":1087,"column":0},"end":{"line":1087,"column":21}},"1087":{"start":{"line":1088,"column":0},"end":{"line":1088,"column":8}},"1088":{"start":{"line":1089,"column":0},"end":{"line":1089,"column":7}},"1089":{"start":{"line":1090,"column":0},"end":{"line":1090,"column":32}},"1090":{"start":{"line":1091,"column":0},"end":{"line":1091,"column":27}},"1091":{"start":{"line":1092,"column":0},"end":{"line":1092,"column":23}},"1092":{"start":{"line":1093,"column":0},"end":{"line":1093,"column":8}},"1093":{"start":{"line":1094,"column":0},"end":{"line":1094,"column":7}},"1094":{"start":{"line":1095,"column":0},"end":{"line":1095,"column":32}},"1095":{"start":{"line":1096,"column":0},"end":{"line":1096,"column":36}},"1096":{"start":{"line":1097,"column":0},"end":{"line":1097,"column":23}},"1097":{"start":{"line":1098,"column":0},"end":{"line":1098,"column":7}},"1098":{"start":{"line":1099,"column":0},"end":{"line":1099,"column":6}},"1099":{"start":{"line":1100,"column":0},"end":{"line":1100,"column":27}},"1100":{"start":{"line":1101,"column":0},"end":{"line":1101,"column":14}},"1101":{"start":{"line":1102,"column":0},"end":{"line":1102,"column":7}},"1102":{"start":{"line":1103,"column":0},"end":{"line":1103,"column":32}},"1103":{"start":{"line":1104,"column":0},"end":{"line":1104,"column":31}},"1104":{"start":{"line":1105,"column":0},"end":{"line":1105,"column":23}},"1105":{"start":{"line":1106,"column":0},"end":{"line":1106,"column":7}},"1106":{"start":{"line":1107,"column":0},"end":{"line":1107,"column":6}},"1107":{"start":{"line":1108,"column":0},"end":{"line":1108,"column":34}},"1108":{"start":{"line":1109,"column":0},"end":{"line":1109,"column":20}},"1109":{"start":{"line":1110,"column":0},"end":{"line":1110,"column":4}},"1110":{"start":{"line":1111,"column":0},"end":{"line":1111,"column":3}},"1111":{"start":{"line":1112,"column":0},"end":{"line":1112,"column":13}},"1112":{"start":{"line":1113,"column":0},"end":{"line":1113,"column":7}},"1113":{"start":{"line":1114,"column":0},"end":{"line":1114,"column":32}},"1114":{"start":{"line":1115,"column":0},"end":{"line":1115,"column":19}},"1115":{"start":{"line":1116,"column":0},"end":{"line":1116,"column":23}},"1116":{"start":{"line":1117,"column":0},"end":{"line":1117,"column":8}},"1117":{"start":{"line":1118,"column":0},"end":{"line":1118,"column":7}},"1118":{"start":{"line":1119,"column":0},"end":{"line":1119,"column":32}},"1119":{"start":{"line":1120,"column":0},"end":{"line":1120,"column":23}},"1120":{"start":{"line":1121,"column":0},"end":{"line":1121,"column":23}},"1121":{"start":{"line":1122,"column":0},"end":{"line":1122,"column":7}},"1122":{"start":{"line":1123,"column":0},"end":{"line":1123,"column":6}},"1123":{"start":{"line":1124,"column":0},"end":{"line":1124,"column":30}},"1124":{"start":{"line":1125,"column":0},"end":{"line":1125,"column":16}},"1125":{"start":{"line":1126,"column":0},"end":{"line":1126,"column":31}},"1126":{"start":{"line":1127,"column":0},"end":{"line":1127,"column":20}},"1127":{"start":{"line":1128,"column":0},"end":{"line":1128,"column":4}},"1128":{"start":{"line":1129,"column":0},"end":{"line":1129,"column":3}},"1129":{"start":{"line":1130,"column":0},"end":{"line":1130,"column":31}},"1130":{"start":{"line":1131,"column":0},"end":{"line":1131,"column":19}},"1131":{"start":{"line":1132,"column":0},"end":{"line":1132,"column":3}},"1132":{"start":{"line":1133,"column":0},"end":{"line":1133,"column":10}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":1,"357":1,"358":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":1,"365":1,"366":1,"367":1,"368":1,"369":1,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"425":1,"426":1,"427":1,"428":1,"429":1,"430":1,"431":1,"432":1,"433":1,"434":1,"435":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1,"443":1,"444":1,"445":1,"446":1,"447":1,"448":1,"449":1,"450":1,"451":1,"452":1,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1,"461":1,"462":1,"463":1,"464":1,"465":1,"466":1,"467":1,"468":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1,"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1,"489":1,"490":1,"491":1,"492":1,"493":1,"494":1,"495":1,"496":1,"497":1,"498":1,"499":1,"500":1,"501":1,"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1,"516":1,"517":1,"518":1,"519":1,"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1,"528":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"536":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"544":1,"545":1,"546":1,"547":1,"548":1,"549":1,"550":1,"551":1,"552":1,"553":1,"554":1,"555":1,"556":1,"557":1,"558":1,"559":1,"560":1,"561":1,"562":1,"563":1,"564":1,"565":1,"566":1,"567":1,"568":1,"569":1,"570":1,"571":1,"572":1,"573":1,"574":1,"575":1,"576":1,"577":1,"578":1,"579":1,"580":1,"581":1,"582":1,"583":1,"584":1,"585":1,"586":1,"587":1,"588":1,"589":1,"590":1,"591":1,"592":1,"593":1,"594":1,"595":1,"596":1,"597":1,"598":1,"599":1,"600":1,"601":1,"602":1,"603":1,"604":1,"605":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"615":1,"616":1,"617":1,"618":1,"619":1,"620":1,"621":1,"622":1,"623":1,"624":1,"625":1,"626":1,"627":1,"628":1,"629":1,"630":1,"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":1,"639":1,"640":1,"641":1,"642":1,"643":1,"644":1,"645":1,"646":1,"647":1,"648":1,"649":1,"650":1,"651":1,"652":1,"653":1,"654":1,"655":1,"656":1,"657":1,"658":1,"659":1,"660":1,"661":1,"662":1,"663":1,"664":1,"665":1,"666":1,"667":1,"668":1,"669":1,"670":1,"671":1,"672":1,"673":1,"674":1,"675":1,"676":1,"677":1,"678":1,"679":1,"680":1,"681":1,"682":1,"683":1,"684":1,"685":1,"686":1,"687":1,"688":1,"689":1,"690":1,"691":1,"692":1,"693":1,"694":1,"695":1,"696":1,"697":1,"698":1,"699":1,"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1,"714":1,"715":1,"716":1,"717":1,"718":1,"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"729":1,"730":1,"731":1,"732":1,"733":1,"734":1,"735":1,"736":1,"737":1,"738":1,"739":1,"740":1,"741":1,"742":1,"743":1,"744":1,"745":1,"746":1,"747":1,"748":1,"749":1,"750":1,"751":1,"752":1,"753":1,"754":1,"755":1,"756":1,"757":1,"758":1,"759":1,"760":1,"761":1,"762":1,"763":1,"764":1,"765":1,"766":1,"767":1,"768":1,"769":1,"770":1,"771":1,"772":1,"773":1,"774":1,"775":1,"776":1,"777":1,"778":1,"779":1,"780":1,"781":1,"782":1,"783":1,"784":1,"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"791":1,"792":1,"793":1,"794":1,"795":1,"796":1,"797":1,"798":1,"799":1,"800":1,"801":1,"802":1,"803":1,"804":1,"805":1,"806":1,"807":1,"808":1,"809":1,"810":1,"811":1,"812":1,"813":1,"814":1,"815":1,"816":1,"817":1,"818":1,"819":1,"820":1,"821":1,"822":1,"823":1,"824":1,"825":1,"826":1,"827":1,"828":1,"829":1,"830":1,"831":1,"832":1,"833":1,"834":1,"835":1,"836":1,"837":1,"838":1,"839":1,"840":1,"841":1,"842":1,"843":1,"844":1,"845":1,"846":1,"847":1,"848":1,"849":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"856":1,"857":1,"858":1,"859":1,"860":1,"861":1,"862":1,"863":1,"864":1,"865":1,"866":1,"867":1,"868":1,"869":1,"870":1,"871":1,"872":1,"873":1,"874":1,"875":1,"876":1,"877":1,"878":1,"879":1,"880":1,"881":1,"882":1,"883":1,"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"890":1,"891":1,"892":1,"893":1,"894":1,"895":1,"896":1,"897":1,"898":1,"899":1,"900":1,"901":1,"902":1,"903":1,"904":1,"905":1,"906":1,"907":1,"908":1,"909":1,"910":1,"911":1,"912":1,"913":1,"914":1,"915":1,"916":1,"917":1,"918":1,"919":1,"920":1,"921":1,"922":1,"923":1,"924":1,"925":1,"926":1,"927":1,"928":1,"929":1,"930":1,"931":1,"932":1,"933":1,"934":1,"935":1,"936":1,"937":1,"938":1,"939":1,"940":1,"941":1,"942":1,"943":1,"944":1,"945":1,"946":1,"947":1,"948":1,"949":1,"950":1,"951":1,"952":1,"953":1,"954":1,"955":1,"956":1,"957":1,"958":1,"959":1,"960":1,"961":1,"962":1,"963":1,"964":1,"965":1,"966":1,"967":1,"968":1,"969":1,"970":1,"971":1,"972":1,"973":1,"974":1,"975":1,"976":1,"977":1,"978":1,"979":1,"980":1,"981":1,"982":1,"983":1,"984":1,"985":1,"986":1,"987":1,"988":1,"989":1,"990":1,"991":1,"992":1,"993":1,"994":1,"995":1,"996":1,"997":1,"998":1,"999":1,"1000":1,"1001":1,"1002":1,"1003":1,"1004":1,"1005":1,"1006":1,"1007":1,"1008":1,"1009":1,"1010":1,"1011":1,"1012":1,"1013":1,"1014":1,"1015":1,"1016":1,"1017":1,"1018":1,"1019":1,"1020":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1026":1,"1027":1,"1028":1,"1029":1,"1030":1,"1031":1,"1032":1,"1033":1,"1034":1,"1035":1,"1036":1,"1037":1,"1038":1,"1039":1,"1040":1,"1041":1,"1042":1,"1043":1,"1044":1,"1045":1,"1046":1,"1047":1,"1048":1,"1049":1,"1050":1,"1051":1,"1052":1,"1053":1,"1054":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1060":1,"1061":1,"1062":1,"1063":1,"1064":1,"1065":1,"1066":1,"1067":1,"1068":1,"1069":1,"1070":1,"1071":1,"1072":1,"1073":1,"1074":1,"1075":1,"1076":1,"1077":1,"1078":1,"1079":1,"1080":1,"1081":1,"1082":1,"1083":1,"1084":1,"1085":1,"1086":1,"1087":1,"1088":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1094":1,"1095":1,"1096":1,"1097":1,"1098":1,"1099":1,"1100":1,"1101":1,"1102":1,"1103":1,"1104":1,"1105":1,"1106":1,"1107":1,"1108":1,"1109":1,"1110":1,"1111":1,"1112":1,"1113":1,"1114":1,"1115":1,"1116":1,"1117":1,"1118":1,"1119":1,"1120":1,"1121":1,"1122":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":1,"1128":1,"1129":1,"1130":1,"1131":1,"1132":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/index.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":26}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":32}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":39}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":33}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/index.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":70}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":69}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":70}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":67}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":32}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":36}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":33}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":49}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":71}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":63}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":70}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":61}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/base/BaseExecutionModule.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/base/BaseExecutionModule.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":59}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":50}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":62}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":19}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":39}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":33}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":27}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/base/BaseModule.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/base/BaseModule.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":75}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":64}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":61}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":14}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":18}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":21}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":34}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":24}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":11}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":18}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":16}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":39}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":42}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":28}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":59}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":45}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":35}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":61}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":27}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":27}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":24}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":31}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":50}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":21}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":104}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":9}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":36}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":13}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":41}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":27}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":25}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":7}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":6}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":28}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":3}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":52}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":52}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":21}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":106}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":9}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":38}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":13}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":41}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":27}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":29}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":7}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":6}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":30}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":5}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":61}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":87}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":86}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":75}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":5}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":50}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":49}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":21}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":82}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":9}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":35}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":26}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":6}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":27}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":5}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":76}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":55}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":89}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":93}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":5}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":52}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":51}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":21}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":83}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":9}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":36}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":26}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":6}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":29}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":28}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":29}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":31}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":23}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":3}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":34}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":23}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":3}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":1,"29":1,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":1,"45":1,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":1,"94":1,"95":0,"96":0,"97":1,"98":1,"99":0,"100":0,"101":1,"102":1,"103":0,"104":0,"105":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"BaseModule","decl":{"start":{"line":21,"column":2},"end":{"line":28,"column":3}},"loc":{"start":{"line":21,"column":2},"end":{"line":28,"column":3}},"line":21},"1":{"name":"installModule","decl":{"start":{"line":30,"column":9},"end":{"line":44,"column":3}},"loc":{"start":{"line":30,"column":9},"end":{"line":44,"column":3}},"line":30},"2":{"name":"uninstallModule","decl":{"start":{"line":46,"column":9},"end":{"line":59,"column":3}},"loc":{"start":{"line":46,"column":9},"end":{"line":59,"column":3}},"line":46},"3":{"name":"isModuleType","decl":{"start":{"line":67,"column":9},"end":{"line":76,"column":3}},"loc":{"start":{"line":67,"column":9},"end":{"line":76,"column":3}},"line":67},"4":{"name":"isInitialized","decl":{"start":{"line":84,"column":9},"end":{"line":93,"column":3}},"loc":{"start":{"line":84,"column":9},"end":{"line":93,"column":3}},"line":84},"5":{"name":"getAddress","decl":{"start":{"line":95,"column":9},"end":{"line":97,"column":3}},"loc":{"start":{"line":95,"column":9},"end":{"line":97,"column":3}},"line":95},"6":{"name":"getVersion","decl":{"start":{"line":99,"column":9},"end":{"line":101,"column":3}},"loc":{"start":{"line":99,"column":9},"end":{"line":101,"column":3}},"line":99},"7":{"name":"getEntryPoint","decl":{"start":{"line":103,"column":9},"end":{"line":105,"column":3}},"loc":{"start":{"line":103,"column":9},"end":{"line":105,"column":3}},"line":103}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/base/BaseValidationModule.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/base/BaseValidationModule.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":43}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":64}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":0}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":63}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":42}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":22}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":3}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":55}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":66}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":373}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":3}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":28}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":15}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":58}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":79}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":27}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":38}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":34}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":30}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":22}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":79}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":68}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":74}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":52}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":49}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":71}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":5}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":20}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":3}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":78}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":4}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":69}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":86}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":66}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":5}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":66}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":79}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":58}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":74}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":52}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":49}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":64}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":5}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":41}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":34}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":5}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":27}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":0,"7":0,"8":1,"9":1,"10":0,"11":0,"12":0,"13":0,"14":1,"15":1,"16":1,"17":0,"18":0,"19":1,"20":1,"21":0,"22":0,"23":0,"24":1,"25":1,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"getSigner","decl":{"start":{"line":6,"column":9},"end":{"line":8,"column":3}},"loc":{"start":{"line":6,"column":9},"end":{"line":8,"column":3}},"line":6},"1":{"name":"getDummySignature","decl":{"start":{"line":10,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":10,"column":2},"end":{"line":14,"column":3}},"line":10},"2":{"name":"getInitData","decl":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"loc":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"line":17},"3":{"name":"signUserOpHash","decl":{"start":{"line":21,"column":2},"end":{"line":24,"column":3}},"loc":{"start":{"line":21,"column":2},"end":{"line":24,"column":3}},"line":21},"4":{"name":"signMessageSmartAccountSigner","decl":{"start":{"line":26,"column":2},"end":{"line":40,"column":3}},"loc":{"start":{"line":26,"column":2},"end":{"line":40,"column":3}},"line":26},"5":{"name":"signMessage","decl":{"start":{"line":49,"column":2},"end":{"line":62,"column":3}},"loc":{"start":{"line":49,"column":2},"end":{"line":62,"column":3}},"line":49}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/executors/OwnableExecutor.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/executors/OwnableExecutor.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":11}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":22}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":21}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":13}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":10}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":13}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":48}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":72}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":65}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":53}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":55}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":64}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":26}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":21}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":19}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":36}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":21}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":5}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":43}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":36}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":24}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":35}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":29}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":36}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":14}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":37}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":28}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":38}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":23}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":25}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":29}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":65}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":32}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":21}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":79}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":9}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":32}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":45}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":6}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":47}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":13}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":19}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":25}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":5}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":19}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":39}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":28}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":29}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":21}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":35}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":37}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":51}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":23}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":85}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":11}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":15}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":67}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":30}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":13}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":15}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":29}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":19}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":35}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":35}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":20}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":19}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":34}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":35}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":20}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":19}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":37}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":33}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":19}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":18}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":34}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":31}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":15}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":14}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":23}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":11}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":9}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":8}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":12}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":37}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":46}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":23}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":80}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":11}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":15}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":67}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":23}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":44}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":13}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":31}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":46}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":32}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":13}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":11}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":9}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":8}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":5}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":62}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":29}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":21}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":15}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":6}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":41}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":18}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":3}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":0}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":68}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":41}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":31}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":58}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":22}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":6}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":62}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":29}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":21}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":15}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":6}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":41}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":26}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":32}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":5}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":18}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":3}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":76}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":41}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":26}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":0}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":47}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":41}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":5}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":35}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":40}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":5}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":34}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":34}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":12}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":59}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":5}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":41}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":34}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":80}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":38}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":6}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":0}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":62}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":29}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":21}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":15}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":6}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":0}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":41}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":26}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":75}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":5}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":18}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":3}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":0}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":72}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":70}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":32}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":21}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":79}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":9}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":32}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":70}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":6}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":0}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":30}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":3}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":1,"31":1,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":1,"57":1,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":1,"123":1,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":1,"141":1,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":1,"177":1,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"OwnableExecutorModule","decl":{"start":{"line":21,"column":9},"end":{"line":30,"column":3}},"loc":{"start":{"line":21,"column":9},"end":{"line":30,"column":3}},"line":21},"1":{"name":"create","decl":{"start":{"line":32,"column":2},"end":{"line":56,"column":3}},"loc":{"start":{"line":32,"column":2},"end":{"line":56,"column":3}},"line":32},"2":{"name":"execute","decl":{"start":{"line":58,"column":2},"end":{"line":122,"column":3}},"loc":{"start":{"line":58,"column":2},"end":{"line":122,"column":3}},"line":58},"3":{"name":"addOwner","decl":{"start":{"line":124,"column":2},"end":{"line":140,"column":3}},"loc":{"start":{"line":124,"column":2},"end":{"line":140,"column":3}},"line":124},"4":{"name":"removeOwner","decl":{"start":{"line":142,"column":2},"end":{"line":176,"column":3}},"loc":{"start":{"line":142,"column":2},"end":{"line":176,"column":3}},"line":142},"5":{"name":"getOwners","decl":{"start":{"line":178,"column":2},"end":{"line":189,"column":3}},"loc":{"start":{"line":178,"column":2},"end":{"line":189,"column":3}},"line":178}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/interfaces/IValidationModule.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/interfaces/IValidationModule.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":55}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":36}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":19}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":29}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":42}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":51}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":61}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":35}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Constants.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Constants.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":47}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":0}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":65}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Helper.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Helper.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":11}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":22}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":12}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":20}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":71}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":66}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":12}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":12}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":13}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":13}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":33}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":7}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":2}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":68}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":2}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":260}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":283}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":197}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":209}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":26}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":8}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":7}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":14}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":7}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":73}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":7}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":706}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":268}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":130}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":311}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":512}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":7}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":321}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":8}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":19}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":8}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":17}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":7}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":17}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":30}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":21}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":33}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":24}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":21}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":8}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":22}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":40}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":20}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":15}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":15}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":15}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":16}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":18}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":27}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":4}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":3}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":14}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":33}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":16}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":19}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":21}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":1}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":3}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":14}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":39}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":29}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":33}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":20}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":25}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":1}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":0}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":32}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":71}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":32}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":81}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":36}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":77}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":23}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":86}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":18}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":4}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":20}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":35}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":21}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":8}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":64}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":21}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":31}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":25}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":89}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":8}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":7}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":26}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":31}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":31}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":38}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":46}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":44}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":38}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":46}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":46}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":7}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":5}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":3}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":91}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":29}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":23}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":83}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":6}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":5}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":24}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":29}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":29}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":36}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":44}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":42}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":36}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":44}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":44}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":5}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":3}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":1}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":0}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":30}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":39}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":25}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":17}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":11}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":56}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":34}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":52}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":52}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":3}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":23}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":1}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":50}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":35}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":43}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":10}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":16}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":26}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":3}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":1}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":60}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":63}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":18}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":1}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":3}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":2}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":86}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":2}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":34}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":35}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":51}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":42}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":2}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":58}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":173}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":181}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":2}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":3}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":71}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":41}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":36}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":66}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":3}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":2}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":81}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":2}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":56}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":171}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":179}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":2}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":161}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":28}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":71}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":3}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":39}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":36}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":27}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":67}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":69}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":35}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":74}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":0}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":31}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":45}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":21}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":6}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":33}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":66}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":71}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":82}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":33}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":23}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":29}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":8}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":21}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":6}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":39}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":57}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":48}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":80}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":71}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":82}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":33}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":23}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":29}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":8}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":21}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":6}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":61}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":4}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":0}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":69}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":10}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":25}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":35}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":28}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":3}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":1,"136":1,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":1,"149":1,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":1,"158":1,"159":0,"160":0,"161":0,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"packUserOp","decl":{"start":{"line":95,"column":0},"end":{"line":135,"column":1}},"loc":{"start":{"line":95,"column":0},"end":{"line":135,"column":1}},"line":95},"1":{"name":"getUserOpHash","decl":{"start":{"line":137,"column":29},"end":{"line":148,"column":1}},"loc":{"start":{"line":137,"column":29},"end":{"line":148,"column":1}},"line":137},"2":{"name":"getRandomSigner","decl":{"start":{"line":150,"column":31},"end":{"line":157,"column":1}},"loc":{"start":{"line":150,"column":31},"end":{"line":157,"column":1}},"line":150},"3":{"name":"parseChain","decl":{"start":{"line":159,"column":26},"end":{"line":162,"column":1}},"loc":{"start":{"line":159,"column":26},"end":{"line":162,"column":1}},"line":159},"4":{"name":"toTransaction","decl":{"start":{"line":230,"column":29},"end":{"line":236,"column":1}},"loc":{"start":{"line":230,"column":29},"end":{"line":236,"column":1}},"line":230}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Types.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":47}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":11}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":17}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":21}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":18}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":21}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":22}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":54}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":45}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":54}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":25}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":1}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":78}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":30}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":21}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":30}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":25}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":84}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":25}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":56}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":38}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":30}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":21}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":30}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":25}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":81}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":28}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":1}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":49}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":41}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":33}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":24}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":33}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":28}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":32}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":29}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":30}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":43}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":4}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":52}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":41}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":33}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":24}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":33}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":28}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":69}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":54}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":46}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":38}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":51}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":29}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":44}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":30}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":4}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":25}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":20}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":20}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":1}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":32}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":18}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":18}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":6}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":6}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":11}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":8}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":1}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":0}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":29}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":26}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":20}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":92}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":32}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":238}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":31}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":62}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":32}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":1}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":35}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":19}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":32}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":1}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":26}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":80}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":73}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":20}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":92}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":33}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":238}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":31}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":62}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":32}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":29}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":38}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":1}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":0}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":54}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":239}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":33}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":1}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":26}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":88}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":12}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":20}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":12}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":1}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":38}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":0}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":41}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":14}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":30}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":1}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":0}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":42}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":39}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":20}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":41}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":20}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":49}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":30}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":34}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":23}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":66}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":21}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":141}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":29}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":1}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":0}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":49}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":38}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":30}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":21}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":30}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":25}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":84}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":25}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":1}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":65}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":38}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":30}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":21}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":30}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":25}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":84}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":28}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":1}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":0}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":35}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":29}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":21}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":31}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":21}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":17}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":38}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":1}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":0}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":37}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":17}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":1}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":0}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":65}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":28}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":12}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":26}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":16}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":30}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":19}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":1}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":0}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":48}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":30}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":23}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":1}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":0}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":28}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":17}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":11}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":24}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":18}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":16}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":1}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":0}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":25}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":17}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":15}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":15}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":1}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":0}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":26}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":13}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":9}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":1}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":0}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":22}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":24}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":12}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":25}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":18}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":0}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":38}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":76}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":16}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":42}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":0}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":36}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":0}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":49}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":25}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":16}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":0}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":61}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":19}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":21}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":0}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":40}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":1}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":0}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":71}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":0}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":22}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":38}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":1}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":0}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":45}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":15}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":14}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":14}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":9}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1},"branchMap":{"0":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":7},"end":{"line":63,"column":25}},"locations":[{"start":{"line":63,"column":7},"end":{"line":63,"column":25}}]},"1":{"type":"branch","line":201,"loc":{"start":{"line":201,"column":7},"end":{"line":201,"column":26}},"locations":[{"start":{"line":201,"column":7},"end":{"line":201,"column":26}}]}},"b":{"0":[5],"1":[5]},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Uid.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Uid.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":48}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":48}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":17}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":32}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":67}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":35}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":3}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":314},"end":{"line":12,"column":1}},"locations":[{"start":{"line":1,"column":314},"end":{"line":12,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":314},"end":{"line":12,"column":1}},"loc":{"start":{"line":1,"column":314},"end":{"line":12,"column":1}},"line":1}},"f":{"0":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/validators/K1ValidatorModule.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/validators/K1ValidatorModule.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":64}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":70}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":47}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":61}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":73}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":31}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":3}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":29}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":31}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":31}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":33}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":40}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":24}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":38}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":29}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":5}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":58}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":19}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":3}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":0,"8":0,"9":1,"10":1,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"K1ValidatorModule","decl":{"start":{"line":7,"column":10},"end":{"line":9,"column":3}},"loc":{"start":{"line":7,"column":10},"end":{"line":9,"column":3}},"line":7},"1":{"name":"create","decl":{"start":{"line":11,"column":2},"end":{"line":23,"column":3}},"loc":{"start":{"line":11,"column":2},"end":{"line":23,"column":3}},"line":11}},"f":{"0":0,"1":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/validators/ValidationModule.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/validators/ValidationModule.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":64}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":70}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":47}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":60}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":73}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":31}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":3}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":29}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":31}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":27}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":13}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":32}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":28}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":20}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":11}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":29}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":57}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":19}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":0,"8":0,"9":1,"10":1,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"ValidationModule","decl":{"start":{"line":7,"column":10},"end":{"line":9,"column":3}},"loc":{"start":{"line":7,"column":10},"end":{"line":9,"column":3}},"line":7},"1":{"name":"create","decl":{"start":{"line":11,"column":2},"end":{"line":24,"column":3}},"loc":{"start":{"line":11,"column":2},"end":{"line":24,"column":3}},"line":11}},"f":{"0":0,"1":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/BiconomyPaymaster.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/BiconomyPaymaster.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":51}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":8}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":9}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":19}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":19}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":72}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":75}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":58}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":8}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":26}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":31}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":11}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":32}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":23}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":25}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":30}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":25}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":49}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":19}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":73}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":50}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":30}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":54}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":34}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":40}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":43}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":32}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":15}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":39}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":3}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":5}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":114}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":46}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":77}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":40}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":43}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":47}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":42}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":12}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":55}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":19}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":26}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":33}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":10}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":35}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":67}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":46}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":42}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":46}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":12}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":10}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":55}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":26}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":34}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":31}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":10}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":35}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":67}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":41}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":42}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":42}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":12}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":10}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":24}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":61}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":8}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":57}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":71}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":27}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":6}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":5}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":79}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":177}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":46}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":70}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":5}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":38}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":56}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":27}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":79}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":49}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":0}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":41}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":81}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":47}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":118}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":87}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":0}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":36}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":0}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":8}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":42}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":48}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":7}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":44}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":12}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":32}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":18}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":52}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":56}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":9}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":7}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":5}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":9}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":43}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":39}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":23}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":32}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":41}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":8}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":14}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":158}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":84}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":8}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":5}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":24}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":38}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":89}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":5}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":6}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":70}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":66}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":14}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":28}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":22}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":18}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":7}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":21}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":55}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":5}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":3}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":0}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":5}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":113}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":46}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":253}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":73}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":5}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":36}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":41}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":44}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":39}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":62}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":41}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":44}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":78}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":44}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":37}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":28}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":28}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":23}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":22}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":5}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":54}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":0}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":36}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":38}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":61}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":5}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":0}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":46}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":58}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":5}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":0}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":57}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":44}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":22}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":0}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":22}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":51}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":41}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":24}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":17}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":0}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":66}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":0}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":22}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":64}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":0}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":9}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":58}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":9}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":54}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":34}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":17}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":43}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":21}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":21}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":15}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":47}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":55}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":67}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":28}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":44}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":68}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":18}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":34}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":63}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":52}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":17}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":15}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":36}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":40}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":26}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":11}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":10}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":19}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":7}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":0}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":29}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":59}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":61}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":37}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":72}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":84}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":18}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":41}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":51}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":11}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":9}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":63}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":72}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":71}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":75}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":59}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":18}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":47}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":51}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":55}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":38}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":11}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":9}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":29}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":20}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":18}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":76}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":9}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":25}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":7}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":26}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":19}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":66}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":29}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":7}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":91}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":10}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":43}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":64}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":68}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":58}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":58}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":9}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":20}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":90}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":9}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":16}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":33}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":55}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":56}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":60}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":43}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":9}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":7}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":17}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":5}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":65}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":3}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":0}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":5}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":107}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":46}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":65}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":71}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":5}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":28}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":41}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":120}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":40}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":62}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":0}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":51}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":65}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":5}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":0}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":42}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":0}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":78}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":0}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":67}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":28}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":28}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":23}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":22}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":5}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":54}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":44}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":0}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":39}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":10}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":49}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":62}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":9}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":77}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":7}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":19}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":61}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":7}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":5}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":0}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":66}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":22}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":64}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":75}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":0}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":166}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":0}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":9}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":58}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":9}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":54}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":34}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":17}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":46}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":21}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":21}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":15}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":27}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":55}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":67}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":57}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":34}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":63}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":52}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":17}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":15}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":14}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":40}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":26}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":11}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":10}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":19}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":7}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":0}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":29}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":65}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":34}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":73}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":36}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":77}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":80}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":16}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":45}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":49}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":53}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":36}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":9}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":7}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":72}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":26}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":19}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":58}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":29}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":7}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":17}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":5}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":59}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":3}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":0}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":5}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":4}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":33}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":93}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":18}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":5}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":33}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":42}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":121}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":22}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":15}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":3}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":0}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":29}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":27}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":33}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":40}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":3}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"343":0,"344":0,"345":0,"346":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"353":0,"354":0,"355":0,"356":0,"357":0,"358":0,"359":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":0,"374":0,"375":0,"376":0,"377":0,"378":0,"379":0,"380":0,"381":0,"382":0,"383":0,"384":0,"385":0,"386":0,"387":0,"388":0,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":0,"398":0,"399":0,"400":0,"401":0,"402":1,"403":1,"404":0,"405":0,"406":0,"407":0,"408":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"BiconomyPaymaster","decl":{"start":{"line":37,"column":2},"end":{"line":43,"column":3}},"loc":{"start":{"line":37,"column":2},"end":{"line":43,"column":3}},"line":37},"1":{"name":"buildTokenApprovalTransaction","decl":{"start":{"line":93,"column":2},"end":{"line":152,"column":3}},"loc":{"start":{"line":93,"column":2},"end":{"line":152,"column":3}},"line":93},"2":{"name":"getPaymasterFeeQuotesOrData","decl":{"start":{"line":160,"column":2},"end":{"line":289,"column":3}},"loc":{"start":{"line":160,"column":2},"end":{"line":289,"column":3}},"line":160},"3":{"name":"getPaymasterAndData","decl":{"start":{"line":297,"column":2},"end":{"line":389,"column":3}},"loc":{"start":{"line":297,"column":2},"end":{"line":389,"column":3}},"line":297},"4":{"name":"getDummyPaymasterAndData","decl":{"start":{"line":397,"column":2},"end":{"line":402,"column":3}},"loc":{"start":{"line":397,"column":2},"end":{"line":402,"column":3}},"line":397},"5":{"name":"create","decl":{"start":{"line":404,"column":2},"end":{"line":408,"column":3}},"loc":{"start":{"line":404,"column":2},"end":{"line":408,"column":3}},"line":404}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/index.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":58}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":42}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":48}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":32}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":38}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":42}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":47}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/interfaces/IHybridPaymaster.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/interfaces/IHybridPaymaster.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":56}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":32}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":37}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":13}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":21}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":26}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":26}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":49}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":57}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":22}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":42}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":29}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":38}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":42}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":29}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":20}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":32}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":57}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":25}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":30}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":42}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":45}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":37}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/interfaces/IPaymaster.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/interfaces/IPaymaster.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":56}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":65}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":129}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":22}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":41}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":38}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":27}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":41}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":20}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/utils/Constants.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/utils/Constants.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":26}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":70}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":72}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":129}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":73}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":91}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":77}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":87}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":69}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"branchMap":{},"b":{},"fnMap":{},"f":{}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/utils/Helpers.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/utils/Helpers.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":3}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":70}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":18}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":3}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":52}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":38}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":0,"6":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"getTimestampInSeconds","decl":{"start":{"line":5,"column":37},"end":{"line":7,"column":1}},"loc":{"start":{"line":5,"column":37},"end":{"line":7,"column":1}},"line":5}},"f":{"0":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/utils/Types.ts": {"path":"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/utils/Types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":49}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":61}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":0}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":45}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":17}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":12}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":21}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":31}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":17}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":12}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":62}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":14}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":22}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":1}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":31}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":39}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":33}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":21}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":66}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":30}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":35}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":25}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":51}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":35}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":32}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":37}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":37}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":26}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":34}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":33}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":22}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":35}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":25}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":66}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":30}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":102}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":22}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":61}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":25}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":51}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":62}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":35}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":32}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":37}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":1}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":30}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":22}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":25}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":1}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":28}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":25}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":1}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":32}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":51}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":62}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":35}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":32}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":36}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":1}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":32}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":40}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":14}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":46}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":17}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":1}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":33}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":29}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":16}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":36}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":22}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":31}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":17}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":18}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":26}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":19}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":30}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":23}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":21}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":38}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":27}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":35}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":21}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":1}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":0}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":39}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":44}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":33}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":74}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":29}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":50}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":37}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":42}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":35}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":63}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":37}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":45}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":29}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":1}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":0}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":40}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":23}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":42}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":28}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":63}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":30}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":45}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":22}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":1}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":0}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":27}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":18}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":25}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1},"branchMap":{"0":{"type":"branch","line":125,"loc":{"start":{"line":125,"column":7},"end":{"line":125,"column":27}},"locations":[{"start":{"line":125,"column":7},"end":{"line":125,"column":27}}]}},"b":{"0":[5]},"fnMap":{},"f":{}} } diff --git a/coverage/coverage-summary.json b/coverage/coverage-summary.json index dd5493d49..b4ade4743 100644 --- a/coverage/coverage-summary.json +++ b/coverage/coverage-summary.json @@ -1,20 +1,53 @@ -{"total": {"lines":{"total":1587,"covered":1366,"skipped":0,"pct":86.07},"statements":{"total":1587,"covered":1366,"skipped":0,"pct":86.07},"functions":{"total":49,"covered":35,"skipped":0,"pct":71.42},"branches":{"total":66,"covered":45,"skipped":0,"pct":68.18},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/account/signerToSmartAccount.ts": {"lines":{"total":333,"covered":226,"skipped":0,"pct":67.86},"functions":{"total":15,"covered":5,"skipped":0,"pct":33.33},"statements":{"total":333,"covered":226,"skipped":0,"pct":67.86},"branches":{"total":13,"covered":11,"skipped":0,"pct":84.61}} -,"/Users/joepegler/Workspace/sdk/src/account/index.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/account/actions/getAccountAddress.ts": {"lines":{"total":66,"covered":64,"skipped":0,"pct":96.96},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":66,"covered":64,"skipped":0,"pct":96.96},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} -,"/Users/joepegler/Workspace/sdk/src/account/utils/abis.ts": {"lines":{"total":247,"covered":247,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":247,"covered":247,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/account/utils/constants.ts": {"lines":{"total":54,"covered":54,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":54,"covered":54,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/account/utils/errors.ts": {"lines":{"total":17,"covered":17,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":17,"covered":17,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/account/utils/helpers.ts": {"lines":{"total":426,"covered":362,"skipped":0,"pct":84.97},"functions":{"total":13,"covered":13,"skipped":0,"pct":100},"statements":{"total":426,"covered":362,"skipped":0,"pct":84.97},"branches":{"total":27,"covered":15,"skipped":0,"pct":55.55}} -,"/Users/joepegler/Workspace/sdk/src/bundler/createBundlerClient.ts": {"lines":{"total":57,"covered":57,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":57,"covered":57,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/bundler/actions/chainId.ts": {"lines":{"total":27,"covered":27,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":27,"covered":27,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/bundler/actions/index.ts": {"lines":{"total":17,"covered":17,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":17,"covered":17,"skipped":0,"pct":100},"branches":{"total":3,"covered":3,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/bundler/utils/helpers.ts": {"lines":{"total":18,"covered":14,"skipped":0,"pct":77.77},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":18,"covered":14,"skipped":0,"pct":77.77},"branches":{"total":3,"covered":1,"skipped":0,"pct":33.33}} -,"/Users/joepegler/Workspace/sdk/src/client/createSmartAccountClient.ts": {"lines":{"total":91,"covered":91,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":91,"covered":91,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/modules/index.ts": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/modules/ecdsaOwnershipValidationModule/createECDSAOwnershipModule.ts": {"lines":{"total":128,"covered":88,"skipped":0,"pct":68.75},"functions":{"total":8,"covered":4,"skipped":0,"pct":50},"statements":{"total":128,"covered":88,"skipped":0,"pct":68.75},"branches":{"total":6,"covered":4,"skipped":0,"pct":66.66}} -,"/Users/joepegler/Workspace/sdk/src/paymaster/createPaymasterClient.ts": {"lines":{"total":56,"covered":56,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":56,"covered":56,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/paymaster/actions/index.ts": {"lines":{"total":17,"covered":17,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":17,"covered":17,"skipped":0,"pct":100},"branches":{"total":3,"covered":3,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/paymaster/actions/sponsorUserOperation.ts": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} -,"/Users/joepegler/Workspace/sdk/src/paymaster/utils/helpers.ts": {"lines":{"total":18,"covered":14,"skipped":0,"pct":77.77},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":18,"covered":14,"skipped":0,"pct":77.77},"branches":{"total":3,"covered":1,"skipped":0,"pct":33.33}} +{"total": {"lines":{"total":9094,"covered":6274,"skipped":0,"pct":68.99},"statements":{"total":9094,"covered":6274,"skipped":0,"pct":68.99},"functions":{"total":164,"covered":2,"skipped":0,"pct":1.21},"branches":{"total":14,"covered":9,"skipped":0,"pct":64.28},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/index.ts": {"lines":{"total":3,"covered":0,"skipped":0,"pct":0},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":3,"covered":0,"skipped":0,"pct":0},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/BaseSmartContractAccount.ts": {"lines":{"total":349,"covered":197,"skipped":0,"pct":56.44},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":349,"covered":197,"skipped":0,"pct":56.44},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/NexusSmartAccount.ts": {"lines":{"total":2053,"covered":858,"skipped":0,"pct":41.79},"functions":{"total":61,"covered":0,"skipped":0,"pct":0},"statements":{"total":2053,"covered":858,"skipped":0,"pct":41.79},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/index.ts": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/signers/local-account.ts": {"lines":{"total":55,"covered":44,"skipped":0,"pct":80},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":55,"covered":44,"skipped":0,"pct":80},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/signers/wallet-client.ts": {"lines":{"total":48,"covered":42,"skipped":0,"pct":87.5},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":48,"covered":42,"skipped":0,"pct":87.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Constants.ts": {"lines":{"total":80,"covered":80,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":80,"covered":80,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/EthersSigner.ts": {"lines":{"total":42,"covered":7,"skipped":0,"pct":16.66},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":42,"covered":7,"skipped":0,"pct":16.66},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Helpers.ts": {"lines":{"total":30,"covered":16,"skipped":0,"pct":53.33},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":30,"covered":16,"skipped":0,"pct":53.33},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/HttpRequests.ts": {"lines":{"total":80,"covered":17,"skipped":0,"pct":21.25},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":80,"covered":17,"skipped":0,"pct":21.25},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Logger.ts": {"lines":{"total":52,"covered":31,"skipped":0,"pct":59.61},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":52,"covered":31,"skipped":0,"pct":59.61},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Types.ts": {"lines":{"total":646,"covered":646,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":646,"covered":646,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/Utils.ts": {"lines":{"total":219,"covered":51,"skipped":0,"pct":23.28},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":219,"covered":51,"skipped":0,"pct":23.28},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/convertSigner.ts": {"lines":{"total":76,"covered":20,"skipped":0,"pct":26.31},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":76,"covered":20,"skipped":0,"pct":26.31},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/getChain.ts": {"lines":{"total":126,"covered":87,"skipped":0,"pct":69.04},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":126,"covered":87,"skipped":0,"pct":69.04},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/account/utils/index.ts": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/Bundler.ts": {"lines":{"total":371,"covered":100,"skipped":0,"pct":26.95},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":371,"covered":100,"skipped":0,"pct":26.95},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/index.ts": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/interfaces/IBundler.ts": {"lines":{"total":22,"covered":22,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":22,"covered":22,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/Constants.ts": {"lines":{"total":95,"covered":95,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":95,"covered":95,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/HelperFunction.ts": {"lines":{"total":66,"covered":35,"skipped":0,"pct":53.03},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":66,"covered":35,"skipped":0,"pct":53.03},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/Types.ts": {"lines":{"total":178,"covered":178,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":178,"covered":178,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/Utils.ts": {"lines":{"total":53,"covered":7,"skipped":0,"pct":13.2},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":53,"covered":7,"skipped":0,"pct":13.2},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/bundler/utils/getAAError.ts": {"lines":{"total":86,"covered":37,"skipped":0,"pct":43.02},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":86,"covered":37,"skipped":0,"pct":43.02},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/addresses.ts": {"lines":{"total":18,"covered":18,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":18,"covered":18,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/index.ts": {"lines":{"total":42,"covered":42,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":42,"covered":42,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/EntryPointABI.ts": {"lines":{"total":657,"covered":657,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":657,"covered":657,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/K1ValidatorAbi.ts": {"lines":{"total":244,"covered":244,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":244,"covered":244,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/K1ValidatorFactoryAbi.ts": {"lines":{"total":386,"covered":386,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":386,"covered":386,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/MockExecutorAbi.ts": {"lines":{"total":309,"covered":309,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":309,"covered":309,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/NexusAbi.ts": {"lines":{"total":1133,"covered":1133,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1133,"covered":1133,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/contracts/abi/index.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/index.ts": {"lines":{"total":14,"covered":14,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":14,"covered":14,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/base/BaseExecutionModule.ts": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/base/BaseModule.ts": {"lines":{"total":106,"covered":48,"skipped":0,"pct":45.28},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":106,"covered":48,"skipped":0,"pct":45.28},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/base/BaseValidationModule.ts": {"lines":{"total":63,"covered":25,"skipped":0,"pct":39.68},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":63,"covered":25,"skipped":0,"pct":39.68},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/executors/OwnableExecutor.ts": {"lines":{"total":190,"covered":32,"skipped":0,"pct":16.84},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":190,"covered":32,"skipped":0,"pct":16.84},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/interfaces/IValidationModule.ts": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Constants.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Helper.ts": {"lines":{"total":236,"covered":168,"skipped":0,"pct":71.18},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":236,"covered":168,"skipped":0,"pct":71.18},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Types.ts": {"lines":{"total":241,"covered":241,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":241,"covered":241,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/utils/Uid.ts": {"lines":{"total":12,"covered":0,"skipped":0,"pct":0},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":12,"covered":0,"skipped":0,"pct":0},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/validators/K1ValidatorModule.ts": {"lines":{"total":24,"covered":10,"skipped":0,"pct":41.66},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":24,"covered":10,"skipped":0,"pct":41.66},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/modules/validators/ValidationModule.ts": {"lines":{"total":25,"covered":10,"skipped":0,"pct":40},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":25,"covered":10,"skipped":0,"pct":40},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/BiconomyPaymaster.ts": {"lines":{"total":409,"covered":114,"skipped":0,"pct":27.87},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":409,"covered":114,"skipped":0,"pct":27.87},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/index.ts": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/interfaces/IHybridPaymaster.ts": {"lines":{"total":29,"covered":29,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":29,"covered":29,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/interfaces/IPaymaster.ts": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/utils/Constants.ts": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/utils/Helpers.ts": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.42},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.42},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/joepegler/Workspace/biconomy-client-sdk/src/paymaster/utils/Types.ts": {"lines":{"total":128,"covered":128,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":128,"covered":128,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} } diff --git a/package.json b/package.json index 2a9bc3b4b..0a7e7ca9c 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "name": "@biconomy/sdk", "author": "Biconomy", "version": "0.0.1", - "description": "sdk for account abstraction, smart accounts, erc-4337 and erc-7579.", + "description": "SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.", "keywords": [ "erc-7579", "modular smart account", @@ -46,51 +46,85 @@ "default": "./_cjs/modules/index.js" } }, + "files": [ + "dist/*", + "README.md" + ], "scripts": { "format": "biome format . --write", "lint": "biome check .", "lint:fix": "bun run lint --apply", + "dev": "bun link && concurrently \"bun run esm:watch\" \"bun run cjs:watch\" \"bun run esm:watch:aliases\" \"bun run cjs:watch:aliases\"", "build": "bun run clean && bun run build:cjs && bun run build:esm && bun run build:types", - "build:cjs": "tsc --project ./tsconfig/tsconfig.cjs.json && tsc-alias -p ./tsconfig/tsconfig.cjs.json && echo > ./dist/_cjs/package.json '{\"type\":\"commonjs\"}'", - "build:esm": "tsc --project ./tsconfig/tsconfig.esm.json && tsc-alias -p ./tsconfig/tsconfig.esm.json && echo > ./dist/_esm/package.json '{\"type\": \"module\",\"sideEffects\":false}'", - "build:types": "tsc --project ./tsconfig/tsconfig.types.json && tsc-alias -p ./tsconfig/tsconfig.types.json", "clean": "rimraf ./dist/_esm ./dist/_cjs ./dist/_types ./dist/tsconfig", - "test": "vitest dev -c ./tests/vitest.config.ts", - "test:ci": "CI=true vitest -c ./tests/vitest.config.ts --coverage", + "test": "vitest -c ./src/test/vitest.config.ts", + "test:watch": "bun run test dev", + "playground": "RUN_PLAYGROUND=true vitest -c ./src/test/vitest.config.ts -t=playground", + "playground:watch": "RUN_PLAYGROUND=true bun run test -t=playground --watch", "size": "size-limit", "docs": "typedoc --tsconfig ./tsconfig/tsconfig.esm.json", "docs:deploy": "bun run docs && gh-pages -d docs", "changeset": "changeset", "changeset:release": "bun run build && changeset publish", - "changeset:version": "changeset version && bun install --lockfile-only" + "changeset:version": "changeset version && bun install --lockfile-only", + "esm:watch": "tsc --project ./tsconfig/tsconfig.esm.json --watch", + "cjs:watch": "tsc --project ./tsconfig/tsconfig.cjs.json --watch", + "esm:watch:aliases": "tsc-alias -p ./tsconfig/tsconfig.esm.json --watch", + "cjs:watch:aliases": "tsc-alias -p ./tsconfig/tsconfig.cjs.json --watch", + "build:cjs": "tsc --project ./tsconfig/tsconfig.cjs.json && tsc-alias -p ./tsconfig/tsconfig.cjs.json && echo > ./dist/_cjs/package.json '{\"type\":\"commonjs\"}'", + "build:esm": "tsc --project ./tsconfig/tsconfig.esm.json && tsc-alias -p ./tsconfig/tsconfig.esm.json && echo > ./dist/_esm/package.json '{\"type\": \"module\",\"sideEffects\":false}'", + "build:types": "tsc --project ./tsconfig/tsconfig.types.json && tsc-alias -p ./tsconfig/tsconfig.types.json", + "fetch:deployment": "bun run ./scripts/fetch:deployment.ts && bun run lint --apply-unsafe", + "fetch:deployment:raw": "bun run ./scripts/fetch:deployment.ts" }, "devDependencies": { "@biomejs/biome": "1.6.0", "@changesets/cli": "^2.27.1", - "@commitlint/cli": "^19.0.3", - "@commitlint/config-conventional": "^19.0.3", + "@commitlint/cli": "^19.4.1", + "@commitlint/config-conventional": "^19.4.1", + "@ethersproject/abi": "^5.7.0", + "@ethersproject/providers": "^5.7.2", + "@ethersproject/wallet": "^5.7.0", + "@pimlico/alto": "^0.0.4", "@size-limit/esbuild-why": "^11", "@size-limit/preset-small-lib": "^11", "@types/bun": "latest", + "@types/yargs": "^17.0.33", "@vitest/coverage-v8": "^1.3.1", + "buffer": "^6.0.3", + "concurrently": "^8.2.2", + "dotenv": "^16.4.5", + "ethers": "^6.13.2", + "execa": "^9.3.1", + "get-port": "^7.1.0", "gh-pages": "^6.1.1", + "nexus": "github:bcnmy/nexus#7f8410d6f8037b698b9dd08e6da9008cbd30418a", + "prool": "^0.0.16", "rimraf": "^5.0.5", "simple-git-hooks": "^2.9.0", "size-limit": "^11", + "ts-node": "^10.9.2", "tsc-alias": "^1.8.8", - "tslib": "^2.6.2", + "tslib": "^2.6.3", "typedoc": "^0.25.9", - "vitest": "^1.3.1" + "viem": "2.21.6", + "vitest": "^1.3.1", + "yargs": "^17.7.2" }, "peerDependencies": { "typescript": "^5", - "viem": "^2" + "viem": "^2.20.0" }, "commitlint": { - "extends": ["@commitlint/config-conventional"] + "extends": [ + "@commitlint/config-conventional" + ] }, "simple-git-hooks": { "pre-commit": "bun run format && bun run lint:fix", "commit-msg": "npx --no -- commitlint --edit ${1}" + }, + "dependencies": { + "merkletreejs": "^0.3.11" } -} +} \ No newline at end of file diff --git a/scripts/fetch:deployment.ts b/scripts/fetch:deployment.ts new file mode 100644 index 000000000..5de6c910b --- /dev/null +++ b/scripts/fetch:deployment.ts @@ -0,0 +1,123 @@ +import fs from "node:fs" + +import { hideBin } from "yargs/helpers" +import yargs from "yargs/yargs" + +type FetchDetails = { + nexusDeploymentPath: string + chainName: string + forSrc: string[] +} +const { + nexusDeploymentPath = "../node_modules/nexus/deployments", + chainName = "anvil-53798", + forSrc = ["K1ValidatorFactory", "Nexus", "K1Validator"] +} = yargs(hideBin(process.argv)).argv as unknown as FetchDetails + +type DeployedContract = { + address: string +} + +export const getDeployments = async () => { + const relativePath = `${__dirname}/${nexusDeploymentPath}/${chainName}` + console.log("Fetching deployments from:", relativePath) + const files = fs.readdirSync(relativePath) + const deployedContracts: Record = {} + + const coreFiles: string[] = [] + const testFiles: string[] = [] + + for (const file of files) { + if (file.includes(".json")) { + const name = `${file.split(".")[0]}` + const jsonFileNameWithExtension = `${name}.json` + const contents = fs.readFileSync( + `${relativePath}/${jsonFileNameWithExtension}`, + "utf8" + ) + const { address, abi } = JSON.parse(contents) + + const isForCore = forSrc.includes(name) + if (isForCore) { + coreFiles.push(name) + } else { + testFiles.push(name) + } + + const tsAbiContent = `export const ${name}Abi = ${JSON.stringify( + abi, + null, + 2 + )} as const;\n` + + const tsAbiPath = isForCore + ? `${__dirname}/../src/sdk/__contracts/abi/${name}Abi.ts` + : `${__dirname}/../src/test/__contracts/abi/${name}Abi.ts` + + fs.writeFileSync(tsAbiPath, tsAbiContent) + + deployedContracts[name] = { + address + } + } + } + + // Write ABI index file... + const abiIndexContent = `export * from "./EIP1271Abi"\nexport * from "./UniActionPolicyAbi"\nexport * from "./EntryPointABI"\n${coreFiles + .map((file) => `export * from "./${file}Abi"`) + .join("\n")}` + + // Write test ABI index file for tests + const testAbiIndexContent = `${testFiles + .map((file) => `export * from "./${file}Abi"`) + .join("\n")}` + + // Write the ABIs + const abiIndexPath = `${__dirname}/../src/sdk/__contracts/abi/index.ts` + fs.writeFileSync(abiIndexPath, abiIndexContent) + + const testAbiIndexPath = `${__dirname}/../src/test/__contracts/abi/index.ts` + fs.writeFileSync(testAbiIndexPath, testAbiIndexContent) + + // Write addresses to src folder + const writeAddressesPath = `${__dirname}/../src/sdk/__contracts/addresses.ts` + const writeAddressesPathTest = `${__dirname}/../src/test/__contracts/mockAddresses.ts` + + const addressesContent = `// The contents of this folder is auto-generated. Please do not edit as your changes are likely to be overwritten\n + export const addresses = ${JSON.stringify( + Object.keys(deployedContracts) + .filter((key) => coreFiles.includes(key)) + .reduce((acc, key) => { + acc[key] = deployedContracts[key].address + return acc + }, {}), + null, + 2 + )} as const;\nexport default addresses\n` + + const testAddressesContent = `// The contents of this folder is auto-generated. Please do not edit as your changes are likely to be overwritten\n + export const mockAddresses = ${JSON.stringify( + Object.keys(deployedContracts) + .filter((key) => testFiles.includes(key)) + .reduce((acc, key) => { + acc[key] = deployedContracts[key].address + return acc + }, {}), + null, + 2 + )} as const;\nexport default mockAddresses\n` + + fs.writeFileSync(writeAddressesPath, addressesContent) + fs.writeFileSync(writeAddressesPathTest, testAddressesContent) +} + +// We recommend this pattern to be able to use async/await everywhere +// and properly handle errors. +getDeployments() + .then(() => { + process.exit(0) + }) + .catch((error) => { + console.error(error) + process.exitCode = 1 + }) diff --git a/scripts/send:userOp.ts b/scripts/send:userOp.ts new file mode 100644 index 000000000..b4901315b --- /dev/null +++ b/scripts/send:userOp.ts @@ -0,0 +1,82 @@ +import { http, type PublicClient, parseEther } from "viem" +import { privateKeyToAccount } from "viem/accounts" +import { getChain } from "../src/sdk/account/utils/getChain" +import { createNexusClient } from "../src/sdk/clients/createNexusClient" + +const k1ValidatorAddress = "0x663E709f60477f07885230E213b8149a7027239B" +const factoryAddress = "0x887Ca6FaFD62737D0E79A2b8Da41f0B15A864778" + +export const getEnvVars = () => { + return { + bundlerUrl: process.env.BUNDLER_URL || "", + privateKey: process.env.PRIVATE_KEY || "", + paymasterUrl: process.env.PAYMASTER_URL || "", + chainId: process.env.CHAIN_ID || "0" + } +} + +export const getConfig = () => { + const { + paymasterUrl, + bundlerUrl, + chainId: chainIdFromEnv, + privateKey + } = getEnvVars() + + const chains = [Number.parseInt(chainIdFromEnv)] + const chainId = chains[0] + const chain = getChain(chainId) + + return { + chain, + chainId, + paymasterUrl, + bundlerUrl, + privateKey + } +} + +const { chain, privateKey, bundlerUrl } = getConfig() + +if ([chain, privateKey, bundlerUrl].every(Boolean) !== true) + throw new Error("Missing env vars") + +const account = privateKeyToAccount(`0x${privateKey}`) +const recipient = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" // vitalik.eth +const nexusClient = await createNexusClient({ + holder: account, + chain, + transport: http(), + bundlerTransport: http(bundlerUrl), + k1ValidatorAddress, + factoryAddress +}) + +const main = async () => { + console.log( + "Your smart account will be deployed at address, make sure it has some funds to pay for user ops: ", + await nexusClient.account.getAddress() + ) + + const hash = await nexusClient.sendTransaction({ + calls: [ + { + to: recipient, + value: parseEther("0.0001") + } + ] + }) + + const receipt = await ( + nexusClient.account.client as PublicClient + ).waitForTransactionReceipt({ hash }) +} + +main() + .then(() => { + process.exit(0) + }) + .catch((error) => { + console.error(error) + process.exitCode = 1 + }) diff --git a/scripts/viem:bundler.ts b/scripts/viem:bundler.ts new file mode 100644 index 000000000..f3882ac61 --- /dev/null +++ b/scripts/viem:bundler.ts @@ -0,0 +1,158 @@ +import { config } from "dotenv" +import { http, type PublicClient, createPublicClient } from "viem" +import { privateKeyToAccount } from "viem/accounts" +import { toNexusAccount } from "../src/sdk/account/toNexusAccount" +import { getChain } from "../src/sdk/account/utils/getChain" +import { createBicoBundlerClient } from "../src/sdk/clients/createBicoBundlerClient" +import { + biconomyPaymasterContext, + createBicoPaymasterClient +} from "../src/sdk/clients/createBicoPaymasterClient" + +config() + +const k1ValidatorAddress = "0x663E709f60477f07885230E213b8149a7027239B" +const factoryAddress = "0x887Ca6FaFD62737D0E79A2b8Da41f0B15A864778" + +const GAS_ESTIMATE = 1.25 + +const safeMultiplier = (bI: bigint, multiplier: number): bigint => + BigInt(Math.round(Number(bI) * multiplier)) + +export const getEnvVars = () => { + return { + bundlerUrl: process.env.BUNDLER_URL || "", + privateKey: process.env.PRIVATE_KEY || "", + paymasterUrl: process.env.PAYMASTER_URL || "", + chainId: process.env.CHAIN_ID || "0" + } +} + +export const getConfig = () => { + const { + paymasterUrl, + bundlerUrl, + chainId: chainIdFromEnv, + privateKey + } = getEnvVars() + + const chainId = Number.parseInt(chainIdFromEnv) + + const chain = getChain(chainId) + + return { + chain, + chainId, + paymasterUrl, + bundlerUrl, + privateKey + } +} + +const { chain, privateKey, bundlerUrl, paymasterUrl } = getConfig() + +if ([chain, privateKey, bundlerUrl].every(Boolean) !== true) + throw new Error("Missing env vars") + +if (!paymasterUrl) console.log("Missing paymaster url") + +const account = privateKeyToAccount(`0x${privateKey}`) +const recipient = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" // vitalik.eth + +const publicClient = createPublicClient({ + chain, + transport: http() +}) + +const main = async () => { + const nexusAccount = await toNexusAccount({ + holder: account, + chain, + transport: http(), + k1ValidatorAddress, + factoryAddress + }) + + const bicoBundler = createBicoBundlerClient({ + chain, + bundlerUrl, + account: nexusAccount, + ...(paymasterUrl + ? { + paymaster: createBicoPaymasterClient({ + transport: http(paymasterUrl) + }), + paymasterContext: biconomyPaymasterContext + } + : undefined), + userOperation: { + estimateFeesPerGas: async (parameters) => { + const feeData = await ( + parameters?.account?.client as PublicClient + )?.estimateFeesPerGas?.() + const gas = { + maxFeePerGas: safeMultiplier(feeData.maxFeePerGas, GAS_ESTIMATE), + maxPriorityFeePerGas: safeMultiplier( + feeData.maxPriorityFeePerGas, + GAS_ESTIMATE + ) + } + return gas + } + } + }) + + const usesAltoBundler = process.env.BUNDLER_URL?.includes("pimlico") + console.time("read methods") + const results = await Promise.allSettled([ + bicoBundler.getChainId(), + bicoBundler.getSupportedEntryPoints(), + bicoBundler.prepareUserOperation({ + sender: account.address, + nonce: 0n, + data: "0x", + signature: "0x", + verificationGasLimit: 1n, + preVerificationGas: 1n, + callData: "0x", + callGasLimit: 1n, + maxFeePerGas: 1n, + maxPriorityFeePerGas: 1n, + account: nexusAccount + }) + ]) + console.timeEnd("read methods") + + const successCount = results.filter((result) => result.status === "fulfilled") + console.log( + `running the ${usesAltoBundler ? "Alto" : "Bico"} bundler with ${ + successCount.length + } successful calls` + ) + + console.time("write methods") + const hash = await bicoBundler.sendUserOperation({ + calls: [ + { + to: recipient, + value: 1n + } + ], + account: nexusAccount + }) + const userOpReceipt = await bicoBundler.waitForUserOperationReceipt({ hash }) + const { transactionHash } = await publicClient.waitForTransactionReceipt({ + hash: userOpReceipt.receipt.transactionHash + }) + console.timeEnd("write methods") + console.log({ transactionHash }) +} + +main() + .then(() => { + process.exit(0) + }) + .catch((error) => { + console.error(error) + process.exitCode = 1 + }) diff --git a/src/accounts/actions/index.ts b/src/accounts/actions/index.ts deleted file mode 100644 index f85767684..000000000 --- a/src/accounts/actions/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from "./prepareUserOperationRequest" -export * from "./sendTransaction" -export * from "./sendUserOperation" -export * from "./sendTransactions" -export * from "./signMessage" -export * from "./signTypedData" diff --git a/src/accounts/actions/prepareUserOperationRequest.ts b/src/accounts/actions/prepareUserOperationRequest.ts deleted file mode 100644 index 3440e179e..000000000 --- a/src/accounts/actions/prepareUserOperationRequest.ts +++ /dev/null @@ -1,186 +0,0 @@ -import type { Chain, Client, Transport } from "viem" -import { estimateFeesPerGas } from "viem/actions" -import type { Prettify } from "viem/chains" -import { estimateUserOperationGas } from "../../bundler/actions/estimateUserOperationGas" -import type { StateOverrides } from "../../bundler/utils/types" -import { PaymasterMode } from "../../paymaster/utils/types" -import { getAction, parseAccount } from "../utils/helpers" -import type { - ENTRYPOINT_ADDRESS_V06_TYPE, - PrepareUserOperationRequestParameters, - SmartAccount, - UserOperationStruct -} from "../utils/types" - -async function prepareUserOperationRequestForEntryPointV06< - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TAccount extends SmartAccount | undefined = SmartAccount | undefined ->( - client: Client, - args: Prettify, - stateOverrides?: StateOverrides -): Promise> { - const { - account: account_ = client.account, - userOperation: partialUserOperation, - middleware - } = args - if (!account_) throw new Error("No account found") - - const account = parseAccount( - account_ - ) as SmartAccount - - const [sender, nonce, initCode, callData] = await Promise.all([ - partialUserOperation.sender || account.address, - partialUserOperation.nonce || account.getNonce(), - partialUserOperation.initCode || account.getInitCode(), - partialUserOperation.callData - ]) - - const userOperation: UserOperationStruct = { - sender, - nonce, - initCode, - callData, - paymasterAndData: "0x", - signature: partialUserOperation.signature || "0x", - maxFeePerGas: partialUserOperation.maxFeePerGas, - maxPriorityFeePerGas: partialUserOperation.maxPriorityFeePerGas, - callGasLimit: partialUserOperation.callGasLimit, - verificationGasLimit: partialUserOperation.verificationGasLimit, - preVerificationGas: partialUserOperation.preVerificationGas - } - - if (userOperation.signature === "0x") { - userOperation.signature = await account.getDummySignature(userOperation) - } - - if (typeof middleware === "function") { - return await middleware({ userOperation }) - } - - if (middleware && typeof middleware !== "function" && middleware.gasPrice) { - const gasPrice = await middleware.gasPrice() - userOperation.maxFeePerGas = gasPrice.maxFeePerGas?.toString() - userOperation.maxPriorityFeePerGas = - gasPrice.maxPriorityFeePerGas?.toString() - } - - if (!userOperation.maxFeePerGas || !userOperation.maxPriorityFeePerGas) { - const estimateGas = await estimateFeesPerGas(account.client) - userOperation.maxFeePerGas = - userOperation.maxFeePerGas || estimateGas.maxFeePerGas.toString() - userOperation.maxPriorityFeePerGas = - userOperation.maxPriorityFeePerGas || - estimateGas.maxPriorityFeePerGas.toString() - } - - if ( - middleware && - typeof middleware !== "function" && - middleware.sponsorUserOperation - ) { - if (middleware.paymasterMode === PaymasterMode.ERC20) { - if (middleware.feeQuote) { - const sponsorUserOperationData = (await middleware.sponsorUserOperation( - { - userOperation, - mode: PaymasterMode.ERC20, - tokenInfo: { - feeTokenAddress: middleware.feeQuote.tokenAddress - } - } as { - userOperation: UserOperationStruct - mode: PaymasterMode - } - )) as Pick< - UserOperationStruct, - | "callGasLimit" - | "verificationGasLimit" - | "preVerificationGas" - | "paymasterAndData" - > - - userOperation.callGasLimit = - sponsorUserOperationData.callGasLimit?.toString() - userOperation.verificationGasLimit = - sponsorUserOperationData.verificationGasLimit?.toString() - userOperation.preVerificationGas = - sponsorUserOperationData.preVerificationGas?.toString() - userOperation.paymasterAndData = - sponsorUserOperationData.paymasterAndData - } else { - throw new Error("No fee quote found for ERC20 Paymaster") - } - } else { - const sponsorUserOperationData = (await middleware.sponsorUserOperation({ - userOperation, - mode: PaymasterMode.SPONSORED - } as { - userOperation: UserOperationStruct - mode: PaymasterMode - })) as Pick< - UserOperationStruct, - | "callGasLimit" - | "verificationGasLimit" - | "preVerificationGas" - | "paymasterAndData" - > - - userOperation.callGasLimit = - sponsorUserOperationData.callGasLimit?.toString() - userOperation.verificationGasLimit = - sponsorUserOperationData.verificationGasLimit?.toString() - userOperation.preVerificationGas = - sponsorUserOperationData.preVerificationGas?.toString() - userOperation.paymasterAndData = sponsorUserOperationData.paymasterAndData - } - } - - if ( - !userOperation.callGasLimit || - !userOperation.verificationGasLimit || - !userOperation.preVerificationGas - ) { - const gasParameters = await getAction(client, estimateUserOperationGas)( - { - userOperation - } as { - userOperation: UserOperationStruct - }, - stateOverrides - ) - - userOperation.callGasLimit = - userOperation.callGasLimit || gasParameters.callGasLimit.toString() - userOperation.verificationGasLimit = - userOperation.verificationGasLimit || - gasParameters.verificationGasLimit.toString() - userOperation.preVerificationGas = - userOperation.preVerificationGas || - gasParameters.preVerificationGas.toString() - } - - return userOperation as UserOperationStruct -} - -export async function prepareUserOperationRequest< - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TAccount extends SmartAccount | undefined = SmartAccount | undefined ->( - client: Client, - args: Prettify, - stateOverrides?: StateOverrides -): Promise { - const { account: account_ = client.account } = args - if (!account_) throw new Error("No account found.") - - return prepareUserOperationRequestForEntryPointV06( - client, - args, - stateOverrides - ) as Promise -} diff --git a/src/accounts/actions/sendTransaction.ts b/src/accounts/actions/sendTransaction.ts deleted file mode 100644 index a13eda296..000000000 --- a/src/accounts/actions/sendTransaction.ts +++ /dev/null @@ -1,128 +0,0 @@ -import type { - Chain, - Client, - Hash, - SendTransactionParameters, - Transport -} from "viem" -import type { Prettify } from "viem/chains" -import { waitForUserOperationReceipt } from "../../bundler/actions/waitForUserOperationReceipt" -import type { UserOpReceipt } from "../../bundler/utils/types" -import { getAction, parseAccount } from "../utils/helpers" -import type { Middleware, SmartAccount } from "../utils/types" -import { sendUserOperation } from "./sendUserOperation" - -export type SendTransactionWithPaymasterParameters< - TChain extends Chain | undefined = Chain | undefined, - TAccount extends SmartAccount | undefined = SmartAccount | undefined, - TChainOverride extends Chain | undefined = Chain | undefined -> = SendTransactionParameters & Middleware - -/** - * Creates, signs, and sends a new transaction to the network. - * This function also allows you to sponsor this transaction if sender is a smartAccount - * - * - Docs: https://viem.sh/docs/actions/wallet/sendTransaction.html - * - Examples: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/transactions/sending-transactions - * - JSON-RPC Methods: - * - JSON-RPC Accounts: [`eth_sendTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction) - * - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction) - * - * @param client - Client to use - * @returns The [Transaction](https://viem.sh/docs/glossary/terms.html#transaction) hash. - * - * @example - * import { createWalletClient, custom } from 'viem' - * import { mainnet } from 'viem/chains' - * import { sendTransaction } from 'viem/wallet' - * - * const client = createWalletClient({ - * chain: mainnet, - * transport: custom(window.ethereum), - * }) - * const hash = await sendTransaction(client, { - * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', - * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', - * value: 1000000000000000000n, - * }) - * - * @example - * // Account Hoisting - * import { createWalletClient, http } from 'viem' - * import { privateKeyToAccount } from 'viem/accounts' - * import { mainnet } from 'viem/chains' - * import { sendTransaction } from 'viem/wallet' - * - * const client = createWalletClient({ - * account: privateKeyToAccount('0xโ€ฆ'), - * chain: mainnet, - * transport: http(), - * }) - * const hash = await sendTransaction(client, { - * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', - * value: 1000000000000000000n, - * }) - */ -export async function sendTransaction< - TChain extends Chain | undefined, - TAccount extends SmartAccount | undefined, - TChainOverride extends Chain | undefined = Chain | undefined ->( - client: Client, - args: Prettify< - SendTransactionWithPaymasterParameters - > -): Promise { - const { - account: account_ = client.account, - data, - maxFeePerGas, - maxPriorityFeePerGas, - to, - value, - nonce, - middleware - } = args - - if (!account_) { - throw new Error("No account found.") - } - - const account = parseAccount(account_) as SmartAccount - - if (!to) throw new Error("Missing to address") - - if (account.type !== "local") { - throw new Error("RPC account type not supported") - } - - const callData = await account.encodeCallData({ - to, - value: value || 0n, - data: data || "0x" - }) - - const userOpHash = await getAction( - client, - sendUserOperation - )({ - userOperation: { - sender: account.address, - maxFeePerGas: maxFeePerGas, - maxPriorityFeePerGas: maxPriorityFeePerGas, - callData: callData, - nonce: nonce ? BigInt(nonce) : undefined - }, - account: account, - middleware - }) - - const userOperationReceipt: UserOpReceipt = await getAction( - client, - waitForUserOperationReceipt - )({ - hash: userOpHash - }) - - return userOperationReceipt?.receipt.transactionHash -} diff --git a/src/accounts/actions/sendTransactions.ts b/src/accounts/actions/sendTransactions.ts deleted file mode 100644 index 6ca513d6d..000000000 --- a/src/accounts/actions/sendTransactions.ts +++ /dev/null @@ -1,128 +0,0 @@ -import type { Address, Chain, Client, Hash, Hex, Transport } from "viem" -import type { Prettify } from "viem/chains" -import { waitForUserOperationReceipt } from "../../bundler/actions/waitForUserOperationReceipt" -import { getAction, parseAccount } from "../utils/helpers" -import type { - GetAccountParameter, - Middleware, - SmartAccount -} from "../utils/types" -import { sendUserOperation } from "./sendUserOperation" - -export type SendTransactionsWithPaymasterParameters< - TAccount extends SmartAccount | undefined = SmartAccount | undefined -> = { - transactions: { to: Address; value: bigint; data: Hex }[] -} & GetAccountParameter & - Middleware & { - maxFeePerGas?: Hex - maxPriorityFeePerGas?: Hex - nonce?: Hex - } - -/** - * Creates, signs, and sends a new transactions to the network. - * This function also allows you to sponsor this transaction if sender is a smartAccount - * - * @param client - Client to use - * @returns The [Transaction](https://viem.sh/docs/glossary/terms.html#transaction) hash. - * - * @example - * import { createWalletClient, custom } from 'viem' - * import { mainnet } from 'viem/chains' - * import { sendTransaction } from 'viem/wallet' - * - * const client = createWalletClient({ - * chain: mainnet, - * transport: custom(window.ethereum), - * }) - * const hash = await sendTransaction(client, [{ - * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', - * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', - * value: 1000000000000000000n, - * }, { - * to: '0x61897970c51812dc3a010c7d01b50e0d17dc1234', - * value: 10000000000000000n, - * }]) - * - * @example - * // Account Hoisting - * import { createWalletClient, http } from 'viem' - * import { privateKeyToAccount } from 'viem/accounts' - * import { mainnet } from 'viem/chains' - * import { sendTransaction } from 'viem/wallet' - * - * const client = createWalletClient({ - * account: privateKeyToAccount('0xโ€ฆ'), - * chain: mainnet, - * transport: http(), - * }) - * const hash = await sendTransactions(client, [{ - * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', - * value: 1000000000000000000n, - * }, { - * to: '0x61897970c51812dc3a010c7d01b50e0d17dc1234', - * value: 10000000000000000n, - * }]) - */ -export async function sendTransactions< - TChain extends Chain | undefined, - TAccount extends SmartAccount | undefined ->( - client: Client, - args: Prettify> -): Promise { - const { - account: account_ = client.account, - transactions, - middleware, - maxFeePerGas, - maxPriorityFeePerGas, - nonce - } = args - - if (!account_) { - throw new Error("No account found.") - } - - const account = parseAccount(account_) as SmartAccount - - if (account.type !== "local") { - throw new Error("RPC account type not supported") - } - - const callData = await account.encodeCallData( - transactions.map(({ to, value, data }) => { - if (!to) throw new Error("Missing to address") - return { - to, - value: value || 0n, - data: data || "0x" - } - }) - ) - - const userOpHash = await getAction( - client, - sendUserOperation - )({ - userOperation: { - sender: account.address, - maxFeePerGas: maxFeePerGas, - maxPriorityFeePerGas: maxPriorityFeePerGas, - callData: callData, - nonce: nonce ? BigInt(nonce) : undefined - }, - account: account, - middleware - }) - - const userOperationReceipt = await getAction( - client, - waitForUserOperationReceipt - )({ - hash: userOpHash - }) - - return userOperationReceipt?.receipt.transactionHash -} diff --git a/src/accounts/actions/sendUserOperation.ts b/src/accounts/actions/sendUserOperation.ts deleted file mode 100644 index a670d716a..000000000 --- a/src/accounts/actions/sendUserOperation.ts +++ /dev/null @@ -1,57 +0,0 @@ -import type { Chain, Client, Hash, Transport } from "viem" -import type { PartialBy, Prettify } from "viem/chains" -import { sendUserOperationWithBundler } from "../../bundler" -import { getAction, parseAccount } from "../utils/helpers" -import type { - GetAccountParameter, - Middleware, - SmartAccount, - UserOperationStruct -} from "../utils/types" -import { prepareUserOperationRequest } from "./prepareUserOperationRequest" - -export type SendUserOperationParameters< - TAccount extends SmartAccount | undefined = SmartAccount | undefined -> = { - userOperation: PartialBy< - UserOperationStruct, - | "sender" - | "nonce" - | "initCode" - | "callGasLimit" - | "verificationGasLimit" - | "preVerificationGas" - | "maxFeePerGas" - | "maxPriorityFeePerGas" - | "paymasterAndData" - | "signature" - > -} & GetAccountParameter & - Middleware - -export async function sendUserOperation< - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TAccount extends SmartAccount | undefined = SmartAccount | undefined ->( - client: Client, - args: Prettify -): Promise { - const { account: account_ = client.account } = args - if (!account_) throw new Error("No account found.") - - const account = parseAccount(account_) as SmartAccount - - const userOperation = await getAction( - client, - prepareUserOperationRequest - )(args) - - userOperation.signature = await account.signUserOperation( - userOperation as UserOperationStruct - ) - - return sendUserOperationWithBundler(client, { - userOperation: userOperation as UserOperationStruct - }) -} diff --git a/src/accounts/actions/signMessage.ts b/src/accounts/actions/signMessage.ts deleted file mode 100644 index 67a1a6fbe..000000000 --- a/src/accounts/actions/signMessage.ts +++ /dev/null @@ -1,73 +0,0 @@ -import type { - Chain, - Client, - SignMessageParameters, - SignMessageReturnType, - Transport -} from "viem" -import { parseAccount } from "../utils/helpers" -import type { SmartAccount } from "../utils/types" - -/** - * Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))`. - * - * - Docs: https://viem.sh/docs/actions/wallet/signMessage.html - * - JSON-RPC Methods: - * - JSON-RPC Accounts: [`personal_sign`](https://docs.metamask.io/guide/signing-data.html#personal-sign) - * - Local Accounts: Signs locally. No JSON-RPC request. - * - * With the calculated signature, you can: - * - use [`verifyMessage`](https://viem.sh/docs/utilities/verifyMessage.html) to verify the signature, - * - use [`recoverMessageAddress`](https://viem.sh/docs/utilities/recoverMessageAddress.html) to recover the signing address from a signature. - * - * @param client - Client to use - * @param parameters - {@link SignMessageParameters} - * @returns The signed message. {@link SignMessageReturnType} - * - * @example - * import { createWalletClient, custom } from 'viem' - * import { mainnet } from 'viem/chains' - * import { signMessage } from 'viem/wallet' - * - * const client = createWalletClient({ - * chain: mainnet, - * transport: custom(window.ethereum), - * }) - * const signature = await signMessage(client, { - * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', - * message: 'hello world', - * }) - * - * @example - * // Account Hoisting - * import { createWalletClient, custom } from 'viem' - * import { privateKeyToAccount } from 'viem/accounts' - * import { mainnet } from 'viem/chains' - * import { signMessage } from 'viem/wallet' - * - * const client = createWalletClient({ - * account: privateKeyToAccount('0xโ€ฆ'), - * chain: mainnet, - * transport: custom(window.ethereum), - * }) - * const signature = await signMessage(client, { - * message: 'hello world', - * }) - */ -export async function signMessage< - TChain extends Chain | undefined, - TAccount extends SmartAccount | undefined ->( - client: Client, - { - account: account_ = client.account, - message - }: SignMessageParameters -): Promise { - if (!account_) throw new Error("No account found.") - - const account = parseAccount(account_) - if (account.type === "local") return account.signMessage({ message }) - - throw new Error("Sign message is not supported by this account") -} diff --git a/src/accounts/actions/signTypedData.ts b/src/accounts/actions/signTypedData.ts deleted file mode 100644 index fbc626168..000000000 --- a/src/accounts/actions/signTypedData.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { - type Chain, - type Client, - type SignTypedDataParameters, - type SignTypedDataReturnType, - type Transport, - type TypedData, - type TypedDataDefinition, - getTypesForEIP712Domain, - validateTypedData -} from "viem" -import { parseAccount } from "../utils/helpers" -import type { SmartAccount } from "../utils/types" - -/** - * Signs typed data and calculates an Ethereum-specific signature in [https://eips.ethereum.org/EIPS/eip-712](https://eips.ethereum.org/EIPS/eip-712): `sign(keccak256("\x19\x01" โ€– domainSeparator โ€– hashStruct(message)))` - * - * - Docs: https://viem.sh/docs/actions/wallet/signTypedData.html - * - JSON-RPC Methods: - * - JSON-RPC Accounts: [`eth_signTypedData_v4`](https://docs.metamask.io/guide/signing-data.html#signtypeddata-v4) - * - Local Accounts: Signs locally. No JSON-RPC request. - * - * @param client - Client to use - * @param parameters - {@link SignTypedDataParameters} - * @returns The signed data. {@link SignTypedDataReturnType} - * - * @example - * import { createWalletClient, custom } from 'viem' - * import { mainnet } from 'viem/chains' - * import { signTypedData } from 'viem/wallet' - * - * const client = createWalletClient({ - * chain: mainnet, - * transport: custom(window.ethereum), - * }) - * const signature = await signTypedData(client, { - * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', - * domain: { - * name: 'Ether Mail', - * version: '1', - * chainId: 1, - * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', - * }, - * types: { - * Person: [ - * { name: 'name', type: 'string' }, - * { name: 'wallet', type: 'address' }, - * ], - * Mail: [ - * { name: 'from', type: 'Person' }, - * { name: 'to', type: 'Person' }, - * { name: 'contents', type: 'string' }, - * ], - * }, - * primaryType: 'Mail', - * message: { - * from: { - * name: 'Cow', - * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', - * }, - * to: { - * name: 'Bob', - * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', - * }, - * contents: 'Hello, Bob!', - * }, - * }) - * - * @example - * // Account Hoisting - * import { createWalletClient, http } from 'viem' - * import { privateKeyToAccount } from 'viem/accounts' - * import { mainnet } from 'viem/chains' - * import { signTypedData } from 'viem/wallet' - * - * const client = createWalletClient({ - * account: privateKeyToAccount('0xโ€ฆ'), - * chain: mainnet, - * transport: http(), - * }) - * const signature = await signTypedData(client, { - * domain: { - * name: 'Ether Mail', - * version: '1', - * chainId: 1, - * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', - * }, - * types: { - * Person: [ - * { name: 'name', type: 'string' }, - * { name: 'wallet', type: 'address' }, - * ], - * Mail: [ - * { name: 'from', type: 'Person' }, - * { name: 'to', type: 'Person' }, - * { name: 'contents', type: 'string' }, - * ], - * }, - * primaryType: 'Mail', - * message: { - * from: { - * name: 'Cow', - * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', - * }, - * to: { - * name: 'Bob', - * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', - * }, - * contents: 'Hello, Bob!', - * }, - * }) - */ -export async function signTypedData< - const TTypedData extends TypedData | { [key: string]: unknown }, - TPrimaryType extends string, - TChain extends Chain | undefined, - TAccount extends SmartAccount | undefined ->( - client: Client, - { - account: account_ = client.account, - domain, - message, - primaryType, - types: types_ - }: SignTypedDataParameters -): Promise { - if (!account_) { - throw new Error("No account found.") - } - - const account = parseAccount(account_) - - const types = { - // @ts-ignore // *TODO come back to this (weird typescript error) - EIP712Domain: getTypesForEIP712Domain({ domain }), - ...(types_ as TTypedData) - } - - validateTypedData({ - domain, - message, - primaryType, - types - } as TypedDataDefinition) - - if (account.type === "local") { - return account.signTypedData({ - domain, - primaryType, - types, - message - } as TypedDataDefinition) - } - - throw new Error("Sign type message is not supported by this account") -} diff --git a/src/accounts/biconomyV2/signerToSmartAccount.ts b/src/accounts/biconomyV2/signerToSmartAccount.ts deleted file mode 100644 index 2c2c7175d..000000000 --- a/src/accounts/biconomyV2/signerToSmartAccount.ts +++ /dev/null @@ -1,461 +0,0 @@ -import type { TypedData } from "viem" -import { - type Address, - type Chain, - type Client, - type Hex, - type LocalAccount, - type Transport, - type TypedDataDefinition, - concatHex, - encodeAbiParameters, - encodeFunctionData, - encodePacked, - getContractAddress, - hexToBigInt, - keccak256, - parseAbiParameters -} from "viem" -import { - getBytecode, - getChainId, - signMessage, - signTypedData -} from "viem/actions" -import type { Prettify } from "viem/chains" - -import { - type BaseValidationModule, - createECDSAOwnershipModule -} from "../../modules/index.js" -import { BiconomyExecuteAbi, BiconomyInitAbi } from "../utils/abis" -import { ENTRYPOINT_ADDRESS_V06 } from "../utils/constants.js" -import { - getUserOperationHash, - toSmartAccount, - validateUserOp -} from "../utils/helpers.js" -import type { SmartAccount, SmartAccountSigner } from "../utils/types.js" - -export type BiconomySmartAccount< - transport extends Transport = Transport, - chain extends Chain | undefined = Chain | undefined -> = SmartAccount<"biconomySmartAccount", transport, chain> & { - defaultValidationModule: BaseValidationModule - activeValidationModule: BaseValidationModule - setActiveValidationModule: ( - moduleAddress: BaseValidationModule - ) => BaseValidationModule -} - -/** - * The account creation ABI for Biconomy Smart Account (from the biconomy SmartAccountFactory) - */ - -const createAccountAbi = [ - { - inputs: [ - { - internalType: "address", - name: "moduleSetupContract", - type: "address" - }, - { - internalType: "bytes", - name: "moduleSetupData", - type: "bytes" - }, - { - internalType: "uint256", - name: "index", - type: "uint256" - } - ], - name: "deployCounterFactualAccount", - outputs: [ - { - internalType: "address", - name: "proxy", - type: "address" - } - ], - stateMutability: "nonpayable", - type: "function" - } -] as const - -/** - * Default addresses for Biconomy Smart Account - */ -const BICONOMY_ADDRESSES: { - ACCOUNT_V2_0_LOGIC: Address - FACTORY_ADDRESS: Address - DEFAULT_FALLBACK_HANDLER_ADDRESS: Address -} = { - ACCOUNT_V2_0_LOGIC: "0x0000002512019Dafb59528B82CB92D3c5D2423aC", // UPDATE FOR V7 - FACTORY_ADDRESS: "0x000000a56Aaca3e9a4C479ea6b6CD0DbcB6634F5", // UPDATE FOR V7 - DEFAULT_FALLBACK_HANDLER_ADDRESS: "0x0bBa6d96BD616BedC6BFaa341742FD43c60b83C1" // UPDATE FOR V7 -} - -const BICONOMY_PROXY_CREATION_CODE = - "0x6080346100aa57601f61012038819003918201601f19168301916001600160401b038311848410176100af578084926020946040528339810103126100aa57516001600160a01b0381168082036100aa5715610065573055604051605a90816100c68239f35b60405162461bcd60e51b815260206004820152601e60248201527f496e76616c696420696d706c656d656e746174696f6e206164647265737300006044820152606490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe608060405230546000808092368280378136915af43d82803e156020573d90f35b3d90fdfea2646970667358221220a03b18dce0be0b4c9afe58a9eb85c35205e2cf087da098bbf1d23945bf89496064736f6c63430008110033" - -/** - * Get the account initialization code for Biconomy smart account with ECDSA as default authorization module - * @param owner - * @param index - * @param factoryAddress - * @param ecdsaValidatorAddress - */ -const getAccountInitCode = async ({ - owner, - index, - defaultValidationModule -}: { - owner: Address - index: bigint - defaultValidationModule: BaseValidationModule -}): Promise => { - if (!owner) throw new Error("Owner account not found") - - // Build the account init code - return encodeFunctionData({ - abi: createAccountAbi, - functionName: "deployCounterFactualAccount", - args: [ - defaultValidationModule.getModuleAddress(), - await defaultValidationModule.getInitData(), - index - ] - }) -} - -export const isSmartAccountDeployed = async ( - client: Client, - address: Address -): Promise => { - const contractCode = await getBytecode(client, { - address: address - }) - - if ((contractCode?.length ?? 0) > 2) { - return true - } - return false -} - -const getAccountAddress = async ({ - factoryAddress, - accountLogicAddress, - fallbackHandlerAddress, - defaultValidationModule, - index = 0n -}: { - factoryAddress: Address - accountLogicAddress: Address - fallbackHandlerAddress: Address - defaultValidationModule: BaseValidationModule - index?: bigint -}): Promise
=> { - // Build account init code - const initialisationData = encodeFunctionData({ - abi: BiconomyInitAbi, - functionName: "init", - args: [ - fallbackHandlerAddress, - defaultValidationModule.getModuleAddress(), - await defaultValidationModule.getInitData() - ] - }) - - const deploymentCode = encodePacked( - ["bytes", "uint256"], - [BICONOMY_PROXY_CREATION_CODE, hexToBigInt(accountLogicAddress)] - ) - - const salt = keccak256( - encodePacked( - ["bytes32", "uint256"], - [keccak256(encodePacked(["bytes"], [initialisationData])), index] - ) - ) - - return getContractAddress({ - from: factoryAddress, - salt, - bytecode: deploymentCode, - opcode: "CREATE2" - }) -} - -export type SignerToBiconomySmartAccountParameters< - TSource extends string = string, - TAddress extends Address = Address -> = Prettify<{ - signer: SmartAccountSigner - address?: Address - index?: bigint - factoryAddress?: Address - accountLogicAddress?: Address - fallbackHandlerAddress?: Address - defaultValidationModule?: BaseValidationModule - activeValidationModule?: BaseValidationModule -}> - -export async function signerToSmartAccount< - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TSource extends string = string, - TAddress extends Address = Address ->( - client: Client, - { - signer, - address, - index = 0n, // TODO: create test for index - factoryAddress = BICONOMY_ADDRESSES.FACTORY_ADDRESS, - accountLogicAddress = BICONOMY_ADDRESSES.ACCOUNT_V2_0_LOGIC, - fallbackHandlerAddress = BICONOMY_ADDRESSES.DEFAULT_FALLBACK_HANDLER_ADDRESS, - defaultValidationModule, - activeValidationModule - }: SignerToBiconomySmartAccountParameters -): Promise> { - // Get the private key related account - const viemSigner: LocalAccount = { - ...signer, - signTransaction: (_, __) => { - throw new Error("Sign transaction not supported by smart account.") - } - } as LocalAccount - - const _defaultValidationModule = - defaultValidationModule ?? - (await createECDSAOwnershipModule({ signer: viemSigner })) - let _activeValidationModule = - activeValidationModule ?? _defaultValidationModule - - // Helper to generate the init code for the smart account - const generateInitCode = async () => - getAccountInitCode({ - owner: viemSigner.address, - index, - defaultValidationModule: _defaultValidationModule - }) - - // Fetch account address and chain id - const [accountAddress, chainId] = await Promise.all([ - address ?? - getAccountAddress({ - defaultValidationModule: _defaultValidationModule, - factoryAddress, - accountLogicAddress, - fallbackHandlerAddress, - index - }), - getChainId(client) - ]) - - if (!accountAddress) throw new Error("Account address not found") - - let smartAccountDeployed = await isSmartAccountDeployed( - client, - accountAddress - ) - - return toSmartAccount({ - address: accountAddress, - defaultValidationModule: _defaultValidationModule, - activeValidationModule: _activeValidationModule, - async signMessage({ message }) { - let signature: Hex = await signMessage(client, { - account: viemSigner, - message - }) - const potentiallyIncorrectV = Number.parseInt(signature.slice(-2), 16) - if (![27, 28].includes(potentiallyIncorrectV)) { - const correctV = potentiallyIncorrectV + 27 - signature = (signature.slice(0, -2) + correctV.toString(16)) as Hex - } - return encodeAbiParameters( - [{ type: "bytes" }, { type: "address" }], - [signature, _defaultValidationModule.getModuleAddress()] - ) - }, - async signTransaction(_, __) { - throw new Error("Sign transaction not supported by smart account.") - }, - async signTypedData< - const TTypedData extends TypedData | Record, - TPrimaryType extends keyof TTypedData | "EIP712Domain" = keyof TTypedData - >(typedData: TypedDataDefinition) { - let signature: Hex = await signTypedData< - TTypedData, - TPrimaryType, - TChain, - undefined - >(client, { - account: viemSigner, - ...typedData - }) - const potentiallyIncorrectV = Number.parseInt(signature.slice(-2), 16) - if (![27, 28].includes(potentiallyIncorrectV)) { - const correctV = potentiallyIncorrectV + 27 - signature = (signature.slice(0, -2) + correctV.toString(16)) as Hex - } - return encodeAbiParameters( - [{ type: "bytes" }, { type: "address" }], - [signature, _defaultValidationModule.getModuleAddress()] - ) - }, - client: client, - publicKey: accountAddress, - entryPoint: ENTRYPOINT_ADDRESS_V06, - source: "biconomySmartAccount", - - // Get the nonce of the smart account - async getNonce() { - // @ts-ignore - return await client.readContract({ - address: ENTRYPOINT_ADDRESS_V06, - abi: [ - { - inputs: [ - { - name: "sender", - type: "address" - }, - { - name: "key", - type: "uint192" - } - ], - name: "getNonce", - outputs: [ - { - name: "nonce", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - } - ], - functionName: "getNonce", - args: [accountAddress, index ?? 0n] // TODO: check if index is correct here - }) - }, - - // Sign a user operation - async signUserOperation(userOperation) { - validateUserOp(userOperation) - const hash = getUserOperationHash({ - userOperation: { - ...userOperation, - signature: "0x" - }, - chainId: chainId - }) - const signature = await signMessage(client, { - account: viemSigner, - message: { raw: hash } - }) - // userOp signature is encoded module signature + module address - const signatureWithModuleAddress = encodeAbiParameters( - parseAbiParameters("bytes, address"), - [signature, _defaultValidationModule.getModuleAddress()] - ) - return signatureWithModuleAddress - }, - - async getFactory() { - if (smartAccountDeployed) return undefined - - smartAccountDeployed = await isSmartAccountDeployed( - client, - accountAddress - ) - - if (smartAccountDeployed) return undefined - - return factoryAddress - }, - - async getFactoryData() { - if (smartAccountDeployed) return undefined - - smartAccountDeployed = await isSmartAccountDeployed( - client, - accountAddress - ) - - if (smartAccountDeployed) return undefined - return generateInitCode() - }, - - // Encode the init code - async getInitCode() { - if (smartAccountDeployed) return "0x" - - smartAccountDeployed = await isSmartAccountDeployed( - client, - accountAddress - ) - - if (smartAccountDeployed) return "0x" - - return concatHex([factoryAddress, await generateInitCode()]) - }, - - // Encode the deploy call data - async encodeDeployCallData(_) { - throw new Error("Doesn't support account deployment") - }, - - // Encode a call - async encodeCallData(args) { - if (Array.isArray(args)) { - // Encode a batched call - const argsArray = args as { - to: Address - value: bigint - data: Hex - }[] - - return encodeFunctionData({ - abi: BiconomyExecuteAbi, - functionName: "executeBatch_y6U", - args: [ - argsArray.map((a) => a.to), - argsArray.map((a) => a.value), - argsArray.map((a) => a.data) - ] - }) - } - const { to, value, data } = args as { - to: Address - value: bigint - data: Hex - } - // Encode a simple call - return encodeFunctionData({ - abi: BiconomyExecuteAbi, - functionName: "execute_ncC", - args: [to, value, data] - }) - }, - - // Get simple dummy signature for ECDSA module authorization - async getDummySignature(_userOperation) { - const moduleAddress = _activeValidationModule.getModuleAddress() - const dynamicPart = moduleAddress.substring(2).padEnd(40, "0") - return `0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000${dynamicPart}000000000000000000000000000000000000000000000000000000000000004181d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b00000000000000000000000000000000000000000000000000000000000000` - }, - - setActiveValidationModule( - validationModule: BaseValidationModule - ): BaseValidationModule { - _activeValidationModule = validationModule - return _activeValidationModule - } - }) -} diff --git a/src/accounts/index.ts b/src/accounts/index.ts deleted file mode 100644 index dfaa6fe7c..000000000 --- a/src/accounts/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./biconomyV2/signerToSmartAccount.js" -export * from "./utils/types" -export * from "./actions" diff --git a/src/accounts/utils/abis.ts b/src/accounts/utils/abis.ts deleted file mode 100644 index 4feede494..000000000 --- a/src/accounts/utils/abis.ts +++ /dev/null @@ -1,247 +0,0 @@ -/** - * The exeuctor abi, used to execute transactions on the Biconomy Modular Smart Account - */ -export const BiconomyExecuteAbi = [ - { - inputs: [ - { - internalType: "address", - name: "dest", - type: "address" - }, - { - internalType: "uint256", - name: "value", - type: "uint256" - }, - { - internalType: "bytes", - name: "func", - type: "bytes" - } - ], - name: "execute_ncC", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address[]", - name: "dest", - type: "address[]" - }, - { - internalType: "uint256[]", - name: "value", - type: "uint256[]" - }, - { - internalType: "bytes[]", - name: "func", - type: "bytes[]" - } - ], - name: "executeBatch_y6U", - outputs: [], - stateMutability: "nonpayable", - type: "function" - } -] as const - -/** - * The init abi, used to initialise Biconomy Modular Smart Account / setup default ECDSA module - */ -export const BiconomyInitAbi = [ - { - inputs: [ - { - internalType: "address", - name: "handler", - type: "address" - }, - { - internalType: "address", - name: "moduleSetupContract", - type: "address" - }, - { - internalType: "bytes", - name: "moduleSetupData", - type: "bytes" - } - ], - name: "init", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "eoaOwner", - type: "address" - } - ], - name: "initForSmartAccount", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - stateMutability: "nonpayable", - type: "function" - } -] - -export const BiconomyFactoryAbi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "account", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "initialAuthModule", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "index", - type: "uint256" - } - ], - name: "AccountCreation", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "account", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "initialAuthModule", - type: "address" - } - ], - name: "AccountCreationWithoutIndex", - type: "event" - }, - { - inputs: [], - name: "accountCreationCode", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "moduleSetupContract", - type: "address" - }, - { - internalType: "bytes", - name: "moduleSetupData", - type: "bytes" - } - ], - name: "deployAccount", - outputs: [ - { - internalType: "address", - name: "proxy", - type: "address" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "moduleSetupContract", - type: "address" - }, - { - internalType: "bytes", - name: "moduleSetupData", - type: "bytes" - }, - { - internalType: "uint256", - name: "index", - type: "uint256" - } - ], - name: "deployCounterFactualAccount", - outputs: [ - { - internalType: "address", - name: "proxy", - type: "address" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "moduleSetupContract", - type: "address" - }, - { - internalType: "bytes", - name: "moduleSetupData", - type: "bytes" - }, - { - internalType: "uint256", - name: "index", - type: "uint256" - } - ], - name: "getAddressForCounterFactualAccount", - outputs: [ - { - internalType: "address", - name: "_account", - type: "address" - } - ], - stateMutability: "view", - type: "function" - } -] as const diff --git a/src/accounts/utils/constants.ts b/src/accounts/utils/constants.ts deleted file mode 100644 index 19031c487..000000000 --- a/src/accounts/utils/constants.ts +++ /dev/null @@ -1,10 +0,0 @@ -// Note: we could append these defaults with ADDRESS suffix -export const DEFAULT_ECDSA_OWNERSHIP_MODULE = - "0x0000001c5b32F37F5beA87BDD5374eB2aC54eA8e" - -export const ECDSA_OWNERSHIP_MODULE_ADDRESSES_BY_VERSION = { - V1_0_0: "0x0000001c5b32F37F5beA87BDD5374eB2aC54eA8e" -} - -export const ENTRYPOINT_ADDRESS_V06 = - "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789" diff --git a/src/accounts/utils/helpers.ts b/src/accounts/utils/helpers.ts deleted file mode 100644 index 34c3560ee..000000000 --- a/src/accounts/utils/helpers.ts +++ /dev/null @@ -1,354 +0,0 @@ -import { - type Abi, - type Account, - type Address, - type Chain, - type Client, - type CustomSource, - type EncodeDeployDataParameters, - type Hash, - type Hex, - type SignableMessage, - type Transport, - type TypedData, - type TypedDataDefinition, - type WalletClient, - concat, - encodeAbiParameters, - keccak256, - parseAbiParameters -} from "viem" -import * as chains from "viem/chains" - -import { toAccount } from "viem/accounts" -import type { BaseValidationModule } from "../../modules/index.js" - -import { signTypedData } from "viem/actions" -import { isSmartAccountDeployed } from "../biconomyV2/signerToSmartAccount.js" -import { ENTRYPOINT_ADDRESS_V06 } from "./constants.js" -import type { - ENTRYPOINT_ADDRESS_V06_TYPE, - GetUserOperationHashParams, - SmartAccount, - SmartAccountSigner, - UserOperationStruct -} from "./types.js" - -const MAGIC_BYTES = - "0x6492649264926492649264926492649264926492649264926492649264926492" - -export function toSmartAccount< - TAccountSource extends CustomSource, - TEntryPoint extends ENTRYPOINT_ADDRESS_V06_TYPE, - TSource extends string = string, - transport extends Transport = Transport, - chain extends Chain | undefined = Chain | undefined, - TAbi extends Abi | readonly unknown[] = Abi ->({ - address, - defaultValidationModule, - activeValidationModule, - client, - source, - entryPoint, - getNonce, - getInitCode, - getFactory, - getFactoryData, - encodeCallData, - getDummySignature, - encodeDeployCallData, - signUserOperation, - signMessage, - signTypedData, - setActiveValidationModule -}: TAccountSource & { - source: TSource - client: Client - entryPoint: TEntryPoint - defaultValidationModule: BaseValidationModule - activeValidationModule: BaseValidationModule - getNonce: () => Promise - getInitCode: () => Promise - getFactory: () => Promise
- getFactoryData: () => Promise - encodeCallData: ( - args: - | { - to: Address - value: bigint - data: Hex - } - | { - to: Address - value: bigint - data: Hex - }[] - ) => Promise - getDummySignature(userOperation: UserOperationStruct): Promise - encodeDeployCallData: ({ - abi, - args, - bytecode - }: EncodeDeployDataParameters) => Promise - signUserOperation: (userOperation: UserOperationStruct) => Promise - setActiveValidationModule: ( - validationModule: BaseValidationModule - ) => BaseValidationModule -}): SmartAccount & { - defaultValidationModule: BaseValidationModule - activeValidationModule: BaseValidationModule - setActiveValidationModule: ( - validationModule: BaseValidationModule - ) => BaseValidationModule -} { - const account = toAccount({ - address: address, - signMessage: async ({ message }: { message: SignableMessage }) => { - const isDeployed = await isSmartAccountDeployed(client, address) - const signature = await signMessage({ message }) - - if (isDeployed) return signature - - const abiEncodedMessage = encodeAbiParameters( - [ - { - type: "address", - name: "create2Factory" - }, - { - type: "bytes", - name: "factoryCalldata" - }, - { - type: "bytes", - name: "originalERC1271Signature" - } - ], - [ - (await getFactory()) ?? "0x", // "0x should never happen if it's deployed" - (await getFactoryData()) ?? "0x", // "0x should never happen if it's deployed" - signature - ] - ) - - return concat([abiEncodedMessage, MAGIC_BYTES]) - }, - signTypedData: async (typedData) => { - const isDeployed = await isSmartAccountDeployed(client, address) - const signature = await signTypedData(typedData as TypedDataDefinition) - - if (isDeployed) return signature - - const abiEncodedMessage = encodeAbiParameters( - [ - { - type: "address", - name: "create2Factory" - }, - { - type: "bytes", - name: "factoryCalldata" - }, - { - type: "bytes", - name: "originalERC1271Signature" - } - ], - [ - (await getFactory()) ?? "0x", // "0x should never happen if it's deployed" - (await getFactoryData()) ?? "0x", // "0x should never happen if it's deployed" - signature - ] - ) - - return concat([abiEncodedMessage, MAGIC_BYTES]) - }, - async signTransaction(_, __) { - throw new Error("Sign transaction not supported by smart account") - } - }) - - return { - ...account, - source, - client, - type: "local", - entryPoint, - defaultValidationModule, - activeValidationModule, - publicKey: address, - getNonce, - getInitCode, - getFactory, - getFactoryData, - encodeCallData, - getDummySignature, - encodeDeployCallData, - signUserOperation, - setActiveValidationModule - } as SmartAccount & { - defaultValidationModule: BaseValidationModule - activeValidationModule: BaseValidationModule - setActiveValidationModule: ( - validationModule: BaseValidationModule - ) => BaseValidationModule - } -} - -/** - * Utility method for converting a chainId to a {@link Chain} object - * - * @param chainId - * @returns a {@link Chain} object for the given chainId - * @throws if the chainId is not found - */ -export const getChain = (chainId: number): Chain => { - for (const chain of Object.values(chains)) { - // @ts-ignore - if (chain.id === chainId) { - return chain as Chain - } - } - throw new Error("could not find chain") -} - -type UserOperationKey = keyof UserOperationStruct - -export const validateUserOp = (userOp: UserOperationStruct): boolean => { - const requiredFields: UserOperationKey[] = [ - "sender", - "nonce", - "initCode", - "callData", - "callGasLimit", - "verificationGasLimit", - "preVerificationGas", - "maxFeePerGas", - "maxPriorityFeePerGas", - "paymasterAndData" - ] - for (const field of requiredFields) { - if (isNullOrUndefined(userOp[field])) { - throw new Error(`${String(field)} is missing in the UserOp`) - } - } - return true -} - -// biome-ignore lint/suspicious/noExplicitAny: Can be use on dynamic types -export const isNullOrUndefined = (value: any): value is undefined => { - return value === null || value === undefined -} - -export function packUserOp( - op: Partial, - forSignature = true -): string { - if (!op.initCode || !op.callData || !op.paymasterAndData) - throw new Error("Missing userOp properties") - if (forSignature) { - return encodeAbiParameters( - parseAbiParameters( - "address, uint256, bytes32, bytes32, uint256, uint256, uint256, uint256, uint256, bytes32" - ), - [ - op.sender as Hex, - BigInt(op.nonce as Hex), - keccak256(op.initCode as Hex), - keccak256(op.callData as Hex), - BigInt(op.callGasLimit as Hex), - BigInt(op.verificationGasLimit as Hex), - BigInt(op.preVerificationGas as Hex), - BigInt(op.maxFeePerGas as Hex), - BigInt(op.maxPriorityFeePerGas as Hex), - keccak256(op.paymasterAndData as Hex) - ] - ) - } - // for the purpose of calculating gas cost encode also signature (and no keccak of bytes) - return encodeAbiParameters( - parseAbiParameters( - "address, uint256, bytes, bytes, uint256, uint256, uint256, uint256, uint256, bytes, bytes" - ), - [ - op.sender as Hex, - BigInt(op.nonce as Hex), - op.initCode as Hex, - op.callData as Hex, - BigInt(op.callGasLimit as Hex), - BigInt(op.verificationGasLimit as Hex), - BigInt(op.preVerificationGas as Hex), - BigInt(op.maxFeePerGas as Hex), - BigInt(op.maxPriorityFeePerGas as Hex), - op.paymasterAndData as Hex, - op.signature as Hex - ] - ) -} - -export const getUserOperationHash = ({ - userOperation, - chainId -}: GetUserOperationHashParams): Hash => { - const encoded = encodeAbiParameters( - [{ type: "bytes32" }, { type: "address" }, { type: "uint256" }], - [ - keccak256(packUserOp(userOperation) as Hex), - ENTRYPOINT_ADDRESS_V06, - BigInt(chainId) - ] - ) as `0x${string}` - - return keccak256(encoded) -} - -// biome-ignore lint/suspicious/noExplicitAny: it's a generic function, so it's hard to type -export function getAction( - client: Client, - // biome-ignore lint/suspicious/noExplicitAny: it's a recursive function, so it's hard to type - action: (_: any, ...params: params) => returnType, - actionName: string = action.name -) { - return (...params: params): returnType => - ( - client as Client & { - [key: string]: (...params: params) => returnType - } - )[actionName]?.(...params) ?? action(client, ...params) -} - -export function parseAccount(account: Address | Account): Account { - if (typeof account === "string") return { address: account, type: "json-rpc" } - return account -} - -export function walletClientToSmartAccountSigner< - TChain extends Chain | undefined = Chain | undefined ->( - walletClient: WalletClient -): SmartAccountSigner<"custom", Address> { - return { - address: walletClient.account.address, - type: "local", - source: "custom", - publicKey: walletClient.account.address, - signMessage: async ({ - message - }: { message: SignableMessage }): Promise => { - return walletClient.signMessage({ message }) - }, - async signTypedData< - const TTypedData extends TypedData | Record, - TPrimaryType extends keyof TTypedData | "EIP712Domain" = keyof TTypedData - >(typedData: TypedDataDefinition) { - return signTypedData( - walletClient, - { - account: walletClient.account, - ...typedData - } - ) - } - } -} diff --git a/src/accounts/utils/types.ts b/src/accounts/utils/types.ts deleted file mode 100644 index 28818429a..000000000 --- a/src/accounts/utils/types.ts +++ /dev/null @@ -1,236 +0,0 @@ -import type { - Abi, - Address, - Chain, - Client, - DeriveChain, - EncodeDeployDataParameters, - FormattedTransactionRequest, - GetChainParameter, - Hex, - LocalAccount, - Transport -} from "viem" - -import type { PartialBy } from "viem/chains" -import type { IsUndefined, UnionOmit } from "viem/types/utils.js" -import type { BaseValidationModule } from "../../modules/index.js" -import type { - PaymasterFeeQuote, - PaymasterMode, - SponsorUserOperationParameters -} from "../../paymaster/utils/types.js" - -export type BigNumberish = number | string | bigint -export type BytesLike = `0x${string}` | Uint8Array - -export type UserOperationStruct = { - /* the origin of the request */ - sender: string - /* nonce of the transaction, returned from the entry point for this Address */ - nonce: BigNumberish - /* the initCode for creating the sender if it does not exist yet, otherwise "0x" */ - initCode: BytesLike - /* the callData passed to the target */ - callData: BytesLike - /* Value used by inner account execution */ - callGasLimit?: BigNumberish - /* Actual gas used by the validation of this UserOperation */ - verificationGasLimit?: BigNumberish - /* Gas overhead of this UserOperation */ - preVerificationGas?: BigNumberish - /* Maximum fee per gas (similar to EIP-1559 max_fee_per_gas) */ - maxFeePerGas?: BigNumberish - /* Maximum priority fee per gas (similar to EIP-1559 max_priority_fee_per_gas) */ - maxPriorityFeePerGas?: BigNumberish - /* Address of paymaster sponsoring the transaction, followed by extra data to send to the paymaster ("0x" for self-sponsored transaction) */ - paymasterAndData: BytesLike | "0x" - /* Data passed into the account along with the nonce during the verification step */ - signature: BytesLike -} - -export type SmartAccountSigner< - TSource extends string = "custom", - TAddress extends Address = Address -> = Omit, "signTransaction"> - -export type TChain = Chain | undefined - -export type EntryPointVersion = "v0.6" | "v0.7" -export type ENTRYPOINT_ADDRESS_V06_TYPE = - "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789" - -export type Transaction = { - to: Address - value?: bigint | 0n - data?: Hex | "0x" -} - -/** - * Represents a smart account. - * - * @template entryPoint - The type of the entry point address. - * @template Name - The type of the account name. - * @template transport - The type of the transport. - * @template chain - The type of the chain. - * @template TAbi - The type of the ABI. - */ -export type SmartAccount< - Name extends string = string, - transport extends Transport = Transport, - chain extends Chain | undefined = Chain | undefined, - TAbi extends Abi | readonly unknown[] = Abi -> = LocalAccount & { - /** - * The client associated with the smart account. - */ - client: Client - - /** - * The entry point address of the smart account. - */ - entryPoint: ENTRYPOINT_ADDRESS_V06_TYPE - - /** - * The default validation module of the smart account. - */ - defaultValidationModule: BaseValidationModule - - /** - * Retrieves the nonce of the smart account. - * - * @returns A promise that resolves to the nonce as a bigint. - */ - getNonce: () => Promise - - /** - * Retrieves the initialization code of the smart account. - * - * @returns A promise that resolves to the initialization code as a Hex string. - */ - getInitCode: () => Promise - - /** - * Retrieves the factory address of the smart account. - * - * @returns A promise that resolves to the factory address as an Address, or undefined if not available. - */ - getFactory: () => Promise
- - /** - * Retrieves the factory data of the smart account. - * - * @returns A promise that resolves to the factory data as a Hex string, or undefined if not available. - */ - getFactoryData: () => Promise - - /** - * Encodes the call data for a transaction. - * - * @param args - The Transaction arguments. - * @returns A promise that resolves to the encoded call data as a Hex string. - */ - encodeCallData: (args: Transaction | Transaction[]) => Promise - - /** - * Retrieves the dummy signature for a user operation. - * - * @param userOperation - The user operation. - * @returns A promise that resolves to the dummy signature as a Hex string. - */ - getDummySignature(userOperation: UserOperationStruct): Promise - - /** - * Encodes the deploy call data for a smart contract. - * - * @param parameters - The parameters for encoding the deploy call data. - * @returns A promise that resolves to the encoded deploy call data as a Hex string. - */ - encodeDeployCallData: ({ - abi, - args, - bytecode - }: EncodeDeployDataParameters) => Promise - - /** - * Signs a user operation. - * - * @param userOperation - The user operation to sign. - * @returns A promise that resolves to the signed user operation as a Hex string. - */ - signUserOperation: (userOperation: UserOperationStruct) => Promise -} - -export type Middleware = { - middleware?: - | ((args: { - userOperation: UserOperationStruct - }) => Promise) - | { - gasPrice?: () => Promise<{ - maxPriorityFeePerGas: bigint | string | undefined - maxFeePerGas: bigint | string | undefined - }> - sponsorUserOperation?: ( - args: SponsorUserOperationParameters - ) => Promise< - Pick< - UserOperationStruct, - | "callGasLimit" - | "verificationGasLimit" - | "preVerificationGas" - | "paymasterAndData" - > - > - paymasterMode?: PaymasterMode - feeQuote?: PaymasterFeeQuote - } -} - -export type GetAccountParameter< - TAccount extends SmartAccount | undefined = SmartAccount | undefined -> = IsUndefined extends true - ? { account?: SmartAccount } - : { account?: SmartAccount } - -export type PrepareUserOperationRequestParameters< - TAccount extends SmartAccount | undefined = SmartAccount | undefined -> = { - userOperation: PartialBy< - UserOperationStruct, - | "sender" - | "nonce" - | "initCode" - | "callGasLimit" - | "verificationGasLimit" - | "preVerificationGas" - | "maxFeePerGas" - | "maxPriorityFeePerGas" - | "paymasterAndData" - | "signature" - > -} & GetAccountParameter & - Middleware - -export type GetUserOperationHashParams = { - userOperation: UserOperationStruct - chainId: number -} - -export type SendTransactionParameters< - TChain extends Chain | undefined = Chain | undefined, - TAccount extends SmartAccount | undefined = SmartAccount | undefined, - TChainOverride extends Chain | undefined = Chain | undefined, - /// - derivedChain extends Chain | undefined = DeriveChain -> = UnionOmit, "from"> & - GetAccountParameter & - GetChainParameter - -export type KnownError = { - name: string - regex: string - description: string - causes: string[] - solutions: string[] -} diff --git a/src/bundler/actions/chainId.ts b/src/bundler/actions/chainId.ts deleted file mode 100644 index c77598709..000000000 --- a/src/bundler/actions/chainId.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { Account, Chain, Client, Transport } from "viem" -import type { BundlerClient } from "../createBundlerClient.js" - -/** - * Returns the supported chain id by the bundler service - * - * @param client {@link BundlerClient} that you created using viem's createClient and extended it with bundlerActions. - * @returns Supported chain id - * - * @example - * import { createClient } from "viem" - * - * const bundlerClient = createClient({ - * chain: polygonMumbai, - * transport: http(BUNDLER_URL) - * }) - * - * const bundlerChainId = chainId(bundlerClient) - * // Return 80001 for Mumbai - */ -export const chainId = async < - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TAccount extends Account | undefined = Account | undefined ->( - client: Client -) => Number(await client.request({ method: "eth_chainId" })) diff --git a/src/bundler/actions/estimateUserOperationGas.ts b/src/bundler/actions/estimateUserOperationGas.ts deleted file mode 100644 index af3654d00..000000000 --- a/src/bundler/actions/estimateUserOperationGas.ts +++ /dev/null @@ -1,69 +0,0 @@ -import type { Account, Chain, Client, Transport } from "viem" -import type { BaseError } from "viem" -import type { Prettify } from "viem/chains" -import { ENTRYPOINT_ADDRESS_V06 } from "../../accounts/utils/constants" -import { getEstimateUserOperationGasError } from "../../errors/getters" -import { deepHexlify } from "../../paymaster/utils/helpers" -import type { - BundlerRpcSchema, - EstimateUserOperationGasParameters, - StateOverrides -} from "../utils/types" - -export const estimateUserOperationGas = async < - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TAccount extends Account | undefined = Account | undefined ->( - client: Client, - args: Prettify, - stateOverrides?: StateOverrides -): Promise<{ - preVerificationGas: string - verificationGasLimit: string - callGasLimit: string - maxPriorityFeePerGas: string - maxFeePerGas: string -}> => { - const { userOperation } = args - - const userOperationWithBigIntAsHex = deepHexlify(userOperation) - const stateOverridesWithBigIntAsHex = deepHexlify(stateOverrides) - - try { - const response = await client.request({ - method: "eth_estimateUserOperationGas", - params: stateOverrides - ? [ - userOperationWithBigIntAsHex, - ENTRYPOINT_ADDRESS_V06, - stateOverridesWithBigIntAsHex - ] - : [userOperationWithBigIntAsHex, ENTRYPOINT_ADDRESS_V06] - }) - - const responseV06 = response as { - preVerificationGas: string - verificationGasLimit: string - callGasLimit: string - maxPriorityFeePerGas: string - maxFeePerGas: string - } - - return { - preVerificationGas: responseV06.preVerificationGas.toString() || "0", - verificationGasLimit: responseV06.verificationGasLimit.toString() || "0", - callGasLimit: responseV06.callGasLimit.toString() || "0", - maxPriorityFeePerGas: responseV06.maxPriorityFeePerGas.toString() || "0", - maxFeePerGas: responseV06.maxFeePerGas.toString() || "0" - } as { - preVerificationGas: string - verificationGasLimit: string - callGasLimit: string - maxPriorityFeePerGas: string - maxFeePerGas: string - } - } catch (err) { - throw await getEstimateUserOperationGasError(err as BaseError, args) - } -} diff --git a/src/bundler/actions/getGasFeeValues.ts b/src/bundler/actions/getGasFeeValues.ts deleted file mode 100644 index d085be85c..000000000 --- a/src/bundler/actions/getGasFeeValues.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { Account, Chain, Client, Transport } from "viem" -import type { BundlerRpcSchema, GasFeeValues } from "../utils/types" - -export const getGasFeeValues = async < - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TAccount extends Account | undefined = Account | undefined ->( - client: Client -): Promise => { - try { - const response = await client.request({ - method: "biconomy_getGasFeeValues", - params: [] - }) - - return { - maxPriorityFeePerGas: response.maxPriorityFeePerGas || "0", - maxFeePerGas: response.maxFeePerGas || "0" - } as GasFeeValues - } catch (err) { - throw new Error(`Error estimating gas fee values. ${err}`) - } -} diff --git a/src/bundler/actions/getUserOperationByHash.ts b/src/bundler/actions/getUserOperationByHash.ts deleted file mode 100644 index 249190ba9..000000000 --- a/src/bundler/actions/getUserOperationByHash.ts +++ /dev/null @@ -1,78 +0,0 @@ -import type { Account, Address, Chain, Client, Hash, Transport } from "viem" -import type { Prettify } from "viem/chains" -import type { UserOperationStruct } from "../../accounts" -import type { BundlerRpcSchema } from "../utils/types" - -export type GetUserOperationByHashParameters = { - hash: Hash -} - -export type GetUserOperationByHashReturnType = { - userOperation: UserOperationStruct - entryPoint: Address - transactionHash: Hash - blockHash: Hash - blockNumber: bigint -} - -/** - * Returns the user operation from userOpHash - * - * - Docs: https://docs.biconomy.io/ ... // TODO - * - * @param client {@link BundlerClient} that you created using viem's createClient and extended it with bundlerActions. - * @param args {@link GetUserOperationByHashParameters} UserOpHash that was returned by {@link sendUserOperation} - * @returns userOperation along with entryPoint, transactionHash, blockHash, blockNumber if found or null - * - * - * @example - * import { createClient } from "viem" - * import { getUserOperationByHash } from "@biconomy/sdk" // TODO - * - * const bundlerClient = createClient({ - * chain: goerli, - * transport: http(BUNDLER_URL) - * }) - * - * getUserOperationByHash(bundlerClient, {hash: userOpHash}) - * - */ -export const getUserOperationByHash = async < - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TAccount extends Account | undefined = Account | undefined ->( - client: Client, - { hash }: Prettify -): Promise | null> => { - const params: [Hash] = [hash] - - const response = await client.request({ - method: "eth_getUserOperationByHash", - params - }) - - if (!response) return null - - const userOperation = { - sender: response.sender, - nonce: response.nonce, - initCode: response.initCode, - callData: response.callData, - callGasLimit: response.callGasLimit, - verificationGasLimit: response.verificationGasLimit, - preVerificationGas: response.preVerificationGas, - maxFeePerGas: response.maxFeePerGas, - maxPriorityFeePerGas: response.maxPriorityFeePerGas, - paymasterAndData: response.paymasterAndData, - signature: response.signature - } - - return { - userOperation: userOperation, - entryPoint: response.entryPoint, - transactionHash: response.transactionHash, - blockHash: response.blockHash, - blockNumber: BigInt(response.blockNumber) - } -} diff --git a/src/bundler/actions/getUserOperationReceipt.ts b/src/bundler/actions/getUserOperationReceipt.ts deleted file mode 100644 index 134deb0c3..000000000 --- a/src/bundler/actions/getUserOperationReceipt.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { Account, Chain, Client, Hash, Transport } from "viem" -import type { Prettify } from "viem/chains" -import type { BundlerRpcSchema, UserOpReceipt } from "../utils/types" - -export type GetUserOperationReceiptParameters = { - hash: Hash -} - -/** - * Returns the user operation receipt from userOpHash - * - * - Docs: https://docs.biconomy.io/ ... // TODO - * - * @param client {@link BundlerClient} that you created using viem's createClient and extended it with bundlerActions. - * @param args {@link GetUserOperationReceiptParameters} UserOpHash that was returned by {@link sendUserOperation} - * @returns user operation receipt {@link GetUserOperationReceiptReturnType} if found or null - * - * - * @example - * import { createClient } from "viem" - * import { getUserOperationReceipt } from "@biconomy/sdk" - * - * const bundlerClient = createClient({ - * chain: goerli, - * transport: http(BUNDLER_URL) - * }) - * - * getUserOperationReceipt(bundlerClient, {hash: userOpHash}) - * - */ -export const getUserOperationReceipt = async < - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TAccount extends Account | undefined = Account | undefined ->( - client: Client, - { hash }: Prettify -): Promise | null> => { - const params: [Hash] = [hash] - - const response = await client.request({ - method: "eth_getUserOperationReceipt", - params - }) - - if (!response) return null - - const userOperationReceipt: UserOpReceipt = { - userOpHash: response.userOpHash, - entryPoint: response.entryPoint, - paymaster: response.paymaster, - actualGasCost: response.actualGasCost, - actualGasUsed: response.actualGasUsed, - success: response.success, - reason: response.reason, - logs: response.logs, - receipt: response.receipt - } - - return userOperationReceipt -} diff --git a/src/bundler/actions/getUserOperationStatus.ts b/src/bundler/actions/getUserOperationStatus.ts deleted file mode 100644 index a83de7274..000000000 --- a/src/bundler/actions/getUserOperationStatus.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { Account, Chain, Client, Hash, Transport } from "viem" -import type { BundlerRpcSchema, UserOpStatus } from "../utils/types" - -export const getUserOpStatus = async < - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TAccount extends Account | undefined = Account | undefined ->( - client: Client, - userOpHash: Hash -): Promise => { - try { - const response = await client.request({ - method: "biconomy_getUserOperationStatus", - params: [userOpHash] - }) - - return { - state: response.state, - transactionHash: response.transactionHash, - userOperationReceipt: response.userOperationReceipt - } as UserOpStatus - } catch (err) { - throw new Error(`Error getting user op status. ${err}`) - } -} diff --git a/src/bundler/actions/index.ts b/src/bundler/actions/index.ts deleted file mode 100644 index 3896ace58..000000000 --- a/src/bundler/actions/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export * from "./chainId" -export * from "./estimateUserOperationGas" -export * from "./getGasFeeValues" -export * from "./getUserOperationByHash" -export * from "./getUserOperationReceipt" -export * from "./getUserOperationStatus" -export * from "./waitForUserOperationReceipt" -export { sendUserOperation as sendUserOperationWithBundler } from "./sendUserOperation" // Explicitly re-export the necessary member diff --git a/src/bundler/actions/sendUserOperation.ts b/src/bundler/actions/sendUserOperation.ts deleted file mode 100644 index c8db43503..000000000 --- a/src/bundler/actions/sendUserOperation.ts +++ /dev/null @@ -1,56 +0,0 @@ -import type { Account, Chain, Client, Hash, Transport } from "viem" -import type { BaseError } from "viem" -import type { Prettify } from "viem/chains" -import type { - SendUserOperationParameters, - UserOperationStruct -} from "../../accounts" -import { ENTRYPOINT_ADDRESS_V06 } from "../../accounts/utils/constants" -import { getSendUserOperationError } from "../../errors/getters" -import type { BundlerRpcSchema } from "../utils/types" - -/** - * Sends user operation to the bundler - * - * - Docs: https://docs.biconomy.io/ ... // TODO - * - * @param client {@link BundlerClient} that you created using viem's createClient and extended it with bundlerActions. - * @param args {@link SendUserOperationParameters}. - * @returns UserOpHash that you can use to track user operation as {@link Hash}. - * - * @example - * import { createClient } from "viem" - * import { sendUserOperation } from "@biconomy/sdk" // TODO - * - * const bundlerClient = createClient({ - * chain: goerli, - * transport: http(BUNDLER_URL) - * }) - * - * const userOpHash = sendUserOperation(bundlerClient, { - * userOperation: signedUserOperation, - * entryPoint: entryPoint - * }) - * - * // Return '0xe9fad2cd67f9ca1d0b7a6513b2a42066784c8df938518da2b51bb8cc9a89ea34' - */ -export const sendUserOperation = async < - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TAccount extends Account | undefined = Account | undefined ->( - client: Client, - args: Prettify -): Promise => { - const { userOperation } = args - try { - const userOperationHash = await client.request({ - method: "eth_sendUserOperation", - params: [userOperation as UserOperationStruct, ENTRYPOINT_ADDRESS_V06] - }) - - return userOperationHash - } catch (err) { - throw await getSendUserOperationError(err as BaseError, args) - } -} diff --git a/src/bundler/actions/waitForUserOperationReceipt.ts b/src/bundler/actions/waitForUserOperationReceipt.ts deleted file mode 100644 index 0e2a70f9e..000000000 --- a/src/bundler/actions/waitForUserOperationReceipt.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { - type Account, - BaseError, - type Chain, - type Client, - type Hash, - type Transport, - stringify -} from "viem" -import type { Prettify } from "viem/chains" - -import { getAction } from "../../accounts/utils/helpers" -import { observe } from "../utils/helpers" -import type { UserOpReceipt } from "../utils/types" -import { getUserOperationReceipt } from "./getUserOperationReceipt" - -export class WaitForUserOperationReceiptTimeoutError extends BaseError { - override name = "WaitForUserOperationReceiptTimeoutError" - constructor({ hash }: { hash: Hash }) { - super( - `Timed out while waiting for transaction with hash "${hash}" to be confirmed.` - ) - } -} - -export type WaitForUserOperationReceiptParameters = { - /** The hash of the transaction. */ - hash: Hash - /** - * Polling frequency (in ms). Defaults to the client's pollingInterval config. - * @default client.pollingInterval - */ - pollingInterval?: number - /** Optional timeout (in milliseconds) to wait before stopping polling. */ - timeout?: number -} - -/** - * Waits for the User Operation to be included on a [Block](https://viem.sh/docs/glossary/terms.html#block) (one confirmation), and then returns the [User Operation Receipt]. - * - * - Docs: https://docs.biconomy.io/ ... // TODO - * - * @param client - Bundler Client to use - * @param parameters - {@link WaitForUserOperationReceiptParameters} - * @returns The transaction receipt. {@link GetUserOperationReceiptReturnType} - * - * @example - * import { waitForUserOperationReceipt, http } from 'viem' - * import { createBundlerClient } from "@biconomy/sdk" // TODO - * import { mainnet } from 'viem/chains' - * - * const client = createBundlerClient({ - * chain: mainnet, - * transport: http(), - * }) - * const userOperationReceipt = await waitForUserOperationReceipt(client, { - * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', - * }) - */ -export const waitForUserOperationReceipt = < - TTransport extends Transport = Transport, - TChain extends Chain | undefined = Chain | undefined, - TAccount extends Account | undefined = Account | undefined ->( - bundlerClient: Client, - { - hash, - pollingInterval = bundlerClient.pollingInterval, - timeout - }: Prettify -): Promise> => { - const observerId = stringify([ - "waitForUserOperationReceipt", - bundlerClient.uid, - hash - ]) - - let userOperationReceipt: UserOpReceipt - - return new Promise((resolve, reject) => { - const unobserve = observe(observerId, { resolve, reject }, async (emit) => { - let timeoutTimer: ReturnType - - const _removeInterval = setInterval(async () => { - const done = (fn: () => void) => { - clearInterval(_removeInterval) - fn() - unobserve() - if (timeout) clearTimeout(timeoutTimer) - } - try { - const _userOperationReceipt = await getAction( - bundlerClient, - getUserOperationReceipt - )({ hash }) - - if (_userOperationReceipt !== null) { - userOperationReceipt = _userOperationReceipt - } - - if (userOperationReceipt) { - done(() => emit.resolve(userOperationReceipt)) - return - } - } catch (err) { - done(() => emit.reject(err)) - return - } - }, pollingInterval) - - if (timeout) { - timeoutTimer = setTimeout(() => { - clearInterval(_removeInterval) - unobserve() - reject( - new WaitForUserOperationReceiptTimeoutError({ - hash - }) - ) - clearTimeout(timeoutTimer) - }, timeout) - } - }) - }) -} diff --git a/src/bundler/createBundlerClient.ts b/src/bundler/createBundlerClient.ts deleted file mode 100644 index ba29e5429..000000000 --- a/src/bundler/createBundlerClient.ts +++ /dev/null @@ -1,57 +0,0 @@ -import type { - Account, - Chain, - Client, - PublicClientConfig, - Transport -} from "viem" -import { createClient } from "viem" -import type { Prettify } from "viem/chains" -import { - type BundlerActions, - bundlerActions -} from "../client/decorators/bundler" -import type { BundlerRpcSchema } from "./utils/types" - -export type BundlerClient< - TChain extends Chain | undefined = Chain | undefined -> = Client< - Transport, - TChain, - Account | undefined, - BundlerRpcSchema, - BundlerActions -> - -/** - * Creates a EIP-4337 compliant Bundler Client with a given [Transport](https://viem.sh/docs/clients/intro.html) configured for a [Chain](https://viem.sh/docs/clients/chains.html). - * - * A Bundler Client is an interface to "erc 4337" [JSON-RPC API](https://eips.ethereum.org/EIPS/eip-4337#rpc-methods-eth-namespace) methods such as sending user operation, estimating gas for a user operation, get user operation receipt, etc through Bundler Actions. - * - * @param config - {@link PublicClientConfig} - * @returns A Bundler Client. {@link BundlerClient} - * - * @example - * import { createPublicClient, http } from 'viem' - * import { mainnet } from 'viem/chains' - * - * const bundlerClient = createBundlerClient({ - * chain: mainnet, - * transport: http(BUNDLER_URL), - * }) - */ -export const createBundlerClient = < - transport extends Transport, - chain extends Chain | undefined = undefined ->( - parameters: PublicClientConfig -): Prettify => { - const { key = "public", name = "Bundler Client" } = parameters - const client = createClient({ - ...parameters, - key, - name, - type: "bundlerClient" - }) - return client.extend(bundlerActions()) -} diff --git a/src/bundler/index.ts b/src/bundler/index.ts deleted file mode 100644 index 0d8a3808b..000000000 --- a/src/bundler/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./utils/helpers.js" -export * from "./createBundlerClient.js" -export * from "./utils/types" -export * from "./actions" diff --git a/src/bundler/utils/helpers.ts b/src/bundler/utils/helpers.ts deleted file mode 100644 index 1e5b3466f..000000000 --- a/src/bundler/utils/helpers.ts +++ /dev/null @@ -1,98 +0,0 @@ -import type { MaybePromise } from "viem/types/utils" - -/** - * Extracts the chain ID from a bundler URL. - * @param url - The bundler URL. - * @returns The extracted chain ID. - * @throws Error if the chain ID cannot be extracted or is invalid. - */ -export const extractChainIdFromBundlerUrl = (url: string): number => { - try { - const regex = /\/api\/v2\/(\d+)\/[a-zA-Z0-9.-]+$/ - const match = regex.exec(url) - if (!match) { - throw new Error("No match") - } - return Number.parseInt(match[1]) - } catch (error) { - throw new Error("Invalid chain id") - } -} - -export const transactionReceiptStatus = { - "0x0": "reverted", - "0x1": "success" -} as const - -// biome-ignore lint/suspicious/noExplicitAny: it's a recursive function, so it's hard to type -export type Callback = ((...args: any[]) => any) | undefined -export type Callbacks = Record - -export const listenersCache = /*#__PURE__*/ new Map< - string, - { id: number; fns: Callbacks }[] ->() -export const cleanupCache = /*#__PURE__*/ new Map void>() - -export type EmitFunction = ( - emit: TCallbacks - // biome-ignore lint/suspicious/noConfusingVoidType: -) => MaybePromise void)> - -let callbackCount = 0 - -/** - * @description Sets up an observer for a given function. If another function - * is set up under the same observer id, the function will only be called once - * for both instances of the observer. - */ -export function observe( - observerId: string, - callbacks: TCallbacks, - fn: EmitFunction -) { - const callbackId = ++callbackCount - - const getListeners = () => listenersCache.get(observerId) || [] - - const unsubscribe = () => { - const listeners = getListeners() - listenersCache.set( - observerId, - // biome-ignore lint/suspicious/noExplicitAny: it's a recursive function, so it's hard to type - listeners.filter((cb: any) => cb.id !== callbackId) - ) - } - - const unwatch = () => { - const cleanup = cleanupCache.get(observerId) - if (getListeners().length === 1 && cleanup) cleanup() - unsubscribe() - } - - const listeners = getListeners() - listenersCache.set(observerId, [ - ...listeners, - { id: callbackId, fns: callbacks } - ]) - - if (listeners && listeners.length > 0) return unwatch - - const emit: TCallbacks = {} as TCallbacks - for (const key in callbacks) { - emit[key] = (( - ...args: Parameters> - ) => { - const listeners = getListeners() - if (listeners.length === 0) return - for (const listener of listeners) { - listener.fns[key]?.(...args) - } - }) as TCallbacks[Extract] - } - - const cleanup = fn(emit) - if (typeof cleanup === "function") cleanupCache.set(observerId, cleanup) - - return unwatch -} diff --git a/src/bundler/utils/types.ts b/src/bundler/utils/types.ts deleted file mode 100644 index 815842bea..000000000 --- a/src/bundler/utils/types.ts +++ /dev/null @@ -1,141 +0,0 @@ -import type { Address, Hash, Hex } from "viem" -import type { PartialBy } from "viem/chains" -import type { UserOperationStruct } from "../../accounts" -import type { ENTRYPOINT_ADDRESS_V06_TYPE } from "../../accounts/utils/types" - -export type BundlerRpcSchema = [ - { - Method: "eth_sendUserOperation" - Parameters: [ - userOperation: UserOperationStruct, - entryPointAddress: ENTRYPOINT_ADDRESS_V06_TYPE - ] - ReturnType: Hash - }, - { - Method: "eth_estimateUserOperationGas" - Parameters: [ - userOperation: PartialBy< - UserOperationStruct, - "callGasLimit" | "preVerificationGas" | "verificationGasLimit" - >, - entryPointAddress: ENTRYPOINT_ADDRESS_V06_TYPE, - stateOverrides?: StateOverrides - ] - ReturnType: { - preVerificationGas: string - verificationGasLimit: string - callGasLimit?: string - maxPriorityFeePerGas: string - maxFeePerGas: string - } - }, - { - Method: "eth_supportedEntryPoints" - Parameters: [] - ReturnType: Address[] - }, - { - Method: "eth_chainId" - Parameters: [] - ReturnType: Hex - }, - { - Method: "eth_getUserOperationByHash" - Parameters: [hash: Hash] - ReturnType: UserOperationStruct & { - entryPoint: ENTRYPOINT_ADDRESS_V06_TYPE - transactionHash: Hash - blockHash: Hash - blockNumber: Hex - } - }, - { - Method: "eth_getUserOperationReceipt" - Parameters: [hash: Hash] - ReturnType: UserOpReceipt - }, - { - Method: "biconomy_getGasFeeValues" - Parameters: [] - ReturnType: GasFeeValues - }, - { - Method: "biconomy_getUserOperationStatus" - Parameters: [userOpHash: Hash] - ReturnType: UserOpStatus - } -] - -export type StateOverrides = { - [x: string]: { - balance?: bigint | undefined - nonce?: bigint | number | undefined - code?: Hex | undefined - state?: { - [x: Hex]: Hex - } - stateDiff?: { - [x: Hex]: Hex - } - } -} - -export type EstimateUserOperationGasParameters = { - userOperation: UserOperationStruct -} - -export type TStatus = "success" | "reverted" - -export type UserOpReceipt = { - /* The request hash of the UserOperation. */ - userOpHash: string - /* The entry point address used for the UserOperation. */ - entryPoint: string - /* The paymaster used for this UserOperation (or empty). */ - paymaster: string - /* The actual amount paid (by account or paymaster) for this UserOperation. */ - actualGasCost: Hex - /* The total gas used by this UserOperation (including preVerification, creation, validation, and execution). */ - actualGasUsed: Hex - /* Indicates whether the execution completed without reverting. */ - success: "true" | "false" - /* In case of revert, this is the revert reason. */ - reason: string - /* The logs generated by this UserOperation (not including logs of other UserOperations in the same bundle). */ - // biome-ignore lint/suspicious/noExplicitAny: difficult to type - logs: Array // The logs generated by this UserOperation (not including logs of other UserOperations in the same bundle) - /* The TransactionReceipt object for the entire bundle, not only for this UserOperation. */ - // biome-ignore lint/suspicious/noExplicitAny: difficult to type - receipt: any -} - -export type GetGasFeeValuesReturnType = GasFeeValues - -export type GasFeeValues = { - maxPriorityFeePerGas: string - maxFeePerGas: string -} - -export type JsonRpcError = { - code: string - message: string - // biome-ignore lint/suspicious/noExplicitAny: - data: any -} - -export type SendUserOpResponse = { - /** The JSON-RPC url */ - jsonrpc: string - /** Request id */ - id: number - result: string - /** The error if the request failed */ - error?: JsonRpcError -} - -export type UserOpStatus = { - state: string // for now // could be an enum - transactionHash?: string - userOperationReceipt?: UserOpReceipt -} diff --git a/src/client/createSmartAccountClient.ts b/src/client/createSmartAccountClient.ts deleted file mode 100644 index 8403e950e..000000000 --- a/src/client/createSmartAccountClient.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { - type Chain, - type Client, - type Transport, - type WalletClientConfig, - createClient -} from "viem" -import type { Prettify } from "viem/chains" - -import type { SmartAccount } from "../accounts/utils/types.js" -import type { BundlerRpcSchema } from "../bundler/utils/types.js" -import { - type SmartAccountActions, - smartAccountActions -} from "./decorators/smartAccount.js" -import type { SmartAccountClientConfig } from "./utils/types.js" - -export type SmartAccountClient< - transport extends Transport = Transport, - chain extends Chain | undefined = Chain | undefined, - account extends SmartAccount | undefined = SmartAccount | undefined -> = Prettify< - Client< - transport, - chain, - account, - BundlerRpcSchema, - SmartAccountActions - > -> - -/** - * Creates a EIP-4337 compliant Bundler Client with a given [Transport](https://viem.sh/docs/clients/intro.html) configured for a [Chain](https://viem.sh/docs/clients/chains.html). - * - * - Docs: - * - * A Bundler Client is an interface to "erc 4337" [JSON-RPC API](https://eips.ethereum.org/EIPS/eip-4337#rpc-methods-eth-namespace) methods such as sending user operation, estimating gas for a user operation, get user operation receipt, etc through Bundler Actions. - * - * @param parameters - {@link WalletClientConfig} - * @returns A Bundler Client. {@link SmartAccountClient} - * - * @example - * import { createPublicClient, http } from 'viem' - * import { mainnet } from 'viem/chains' - * - * const smartAccountClient = createSmartAccountClient({ - * chain: mainnet, - * transport: http(BUNDLER_URL), - * }) - */ - -export function createSmartAccountClient< - TSmartAccount extends SmartAccount, - TTransport extends Transport = Transport, - TChain extends Chain = Chain ->( - parameters: SmartAccountClientConfig -): SmartAccountClient { - const { - key = "Account", - name = "Smart Account Client", - bundlerTransport - } = parameters - const client = createClient({ - ...parameters, - key, - name, - transport: bundlerTransport, - type: "smartAccountClient" - }) - - return client.extend( - smartAccountActions({ middleware: parameters.middleware }) - ) as SmartAccountClient -} diff --git a/src/client/decorators/bundler.ts b/src/client/decorators/bundler.ts deleted file mode 100644 index da3e5036f..000000000 --- a/src/client/decorators/bundler.ts +++ /dev/null @@ -1,253 +0,0 @@ -import type { Client, Hash } from "viem" -import type { Prettify } from "viem/chains" -import type { SendUserOperationParameters } from "../../accounts/actions/sendUserOperation" -import { ENTRYPOINT_ADDRESS_V06 } from "../../accounts/utils/constants" -import type { ENTRYPOINT_ADDRESS_V06_TYPE } from "../../accounts/utils/types" -import { estimateUserOperationGas } from "../../bundler" -import { chainId } from "../../bundler/actions/chainId" -import { getGasFeeValues } from "../../bundler/actions/getGasFeeValues" -import { - type GetUserOperationByHashParameters, - type GetUserOperationByHashReturnType, - getUserOperationByHash -} from "../../bundler/actions/getUserOperationByHash" -import { - type GetUserOperationReceiptParameters, - getUserOperationReceipt -} from "../../bundler/actions/getUserOperationReceipt" -import { getUserOpStatus } from "../../bundler/actions/getUserOperationStatus" -import { sendUserOperation } from "../../bundler/actions/sendUserOperation" -import { - type WaitForUserOperationReceiptParameters, - waitForUserOperationReceipt -} from "../../bundler/actions/waitForUserOperationReceipt" -import type { BundlerClient } from "../../bundler/createBundlerClient" -import type { - EstimateUserOperationGasParameters, - GetGasFeeValuesReturnType, - StateOverrides, - UserOpReceipt, - UserOpStatus -} from "../../bundler/utils/types" - -export type BundlerActions = { - /** - * - * Sends user operation to the bundler - * - * - Docs: https://docs.biconomy.io/... // TODO - * - * @param args {@link SendUserOperationParameters}. - * @returns UserOpHash that you can use to track user operation as {@link Hash}. - * - * @example - * import { createClient } from "viem" - * import { bundlerActions } from "@biconomy/sdk" // TODO - * - * const bundlerClient = createClient({ - * chain: goerli, - * transport: http(bundlerUrl) - * }).extend(bundlerActions) - * - * const userOpHash = await bundlerClient.sendUserOperation({ - * userOperation: signedUserOperation - * }) - * - * Return "0x...hash" - */ - sendUserOperation: ( - args: Prettify> - ) => Promise - /** - * - * Estimates preVerificationGas, verificationGasLimit and callGasLimit for user operation - * - * - Docs: https://docs.biconomy.io/... // TODO - * - * @param args {@link EstimateUserOperationGasParameters} - * @returns preVerificationGas, verificationGasLimit and callGasLimit as {@link EstimateUserOperationGasReturnType} - * - * @example - * import { createClient } from "viem" - * import { bundlerActions } from "@biconomy/sdk" // TODO - * - * const bundlerClient = createClient({ - * chain: goerli, - * transport: http(BUNDLER_URL) - * }).extend(bundlerActions) - * - * const gasParameters = await bundlerClient.estimateUserOperationGas({ - * userOperation: signedUserOperation, - * entryPoint: entryPoint - * }) - * - * // Return {preVerificationGas: 43492n, verificationGasLimit: 59436n, callGasLimit: 9000n} - */ - estimateUserOperationGas: ( - args: Prettify>, - stateOverrides?: StateOverrides - ) => Promise< - Prettify<{ - preVerificationGas: string - verificationGasLimit: string - callGasLimit: string - maxPriorityFeePerGas: string - maxFeePerGas: string - }> - > - /** - * - * Returns the supported entrypoints by the bundler service - * - * - Docs: https://docs.biconomy.io/... // TODO - * - * @returns Supported entryPoints - * - * @example - * import { createClient } from "viem" - * import { bundlerActions } from "@biconomy/sdk" // TODO - * - * const bundlerClient = createClient({ - * chain: goerli, - * transport: http(BUNDLER_URL) - * }).extend(bundlerActions) - * - * const supportedEntryPoints = await bundlerClient.supportedEntryPoints() - * - * // Return ['0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789'] - */ - supportedEntryPoints: () => ENTRYPOINT_ADDRESS_V06_TYPE - /** - * - * Returns the supported chain id by the bundler service - * - * - Docs: https://docs.biconomy.io/... // TODO - * - * @returns Supported chain id - * - * @example - * import { createClient } from "viem" - * import { bundlerActions } from "@biconomy/sdk" // TODO - * - * const bundlerClient = createClient({ - * chain: goerli, - * transport: http(BUNDLER_URL) - * }).extend(bundlerActions) - * - * const chainId = await bundlerClient.chainId() - * // Return 5n for Goerli - */ - chainId: () => Promise - /** - * - * Returns the user operation from userOpHash - * - * - Docs: https://docs.biconomy.io/... // TODO - * - * @param args UserOpHash that was returned by {@link sendUserOperation} - * @returns userOperation along with entryPoint, transactionHash, blockHash, blockNumber if found or null - * - * @example - * import { createClient } from "viem" - * import { bundlerActions } from "@biconomy/sdk" // TODO - * - * const bundlerClient = createClient({ - * chain: goerli, - * transport: http(BUNDLER_URL) - * }).extend(bundlerActions) - * - * await bundlerClient.getUserOperationByHash(userOpHash) - * - */ - getUserOperationByHash: ( - args: Prettify - ) => Promise | null> - /** - * - * Returns the user operation receipt from userOpHash - * - * - Docs: https://docs.biconomy.io/... // TODO - * - * @param args {@link GetUserOperationReceiptParameters} UserOpHash that was returned by {@link sendUserOperation} - * @returns user operation receipt {@link GetUserOperationReceiptReturnType} if found or null - * - * @example - * import { createClient } from "viem" - * import { bundlerActions } from "@biconomy/sdk" // TODO - * - * const bundlerClient = createClient({ - * chain: goerli, - * transport: http(BUNDLER_URL) - * }).extend(bundlerActions) - * - * await bundlerClient.getUserOperationReceipt({hash: userOpHash}) - * - */ - getUserOperationReceipt: ( - args: Prettify<{ hash: Hash }> - ) => Promise | null> - - /** - * Waits for the User Operation to be included on a [Block](https://viem.sh/docs/glossary/terms.html#block) (one confirmation), and then returns the [User Operation Receipt] - * - * - Docs: https://docs.biconomy.io/... // TODO - * - * @param client - Bundler Client to use - * @param parameters - {@link WaitForUserOperationReceiptParameters} - * @returns The transaction receipt. {@link GetUserOperationReceiptReturnType} - * - * @example - * import { waitForUserOperationReceipt, http } from 'viem' - * import { createBundlerClient } from "@biconomy/sdk" // TODO - * import { mainnet } from 'viem/chains' - * - * const bundlerClient = createBundlerClient({ - * chain: mainnet, - * transport: http(bundlerUrl), - * }) - * const userOperationReceipt = await bundlerClient.waitForUserOperationReceipt({ - * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', - * }) - */ - waitForUserOperationReceipt: ( - args: Prettify - ) => Promise> - - getGasFeeValues: () => Promise - getUserOpStatus: (userOpHash: Hash) => Promise -} - -const bundlerActions = - () => - (client: Client): BundlerActions => ({ - sendUserOperation: async ( - args: Omit - ): Promise => - sendUserOperation(client as BundlerClient, { - ...args - }), - estimateUserOperationGas: ( - args: EstimateUserOperationGasParameters, - stateOverrides?: StateOverrides - ) => - estimateUserOperationGas( - client as BundlerClient, - { ...args }, - stateOverrides - ), - supportedEntryPoints: (): ENTRYPOINT_ADDRESS_V06_TYPE => - ENTRYPOINT_ADDRESS_V06, - chainId: () => chainId(client as BundlerClient), - getUserOperationByHash: (args: GetUserOperationByHashParameters) => - getUserOperationByHash(client as BundlerClient, args), - getUserOperationReceipt: (args: GetUserOperationReceiptParameters) => - getUserOperationReceipt(client as BundlerClient, args), - waitForUserOperationReceipt: ( - args: WaitForUserOperationReceiptParameters - ) => waitForUserOperationReceipt(client as BundlerClient, args), - getGasFeeValues: () => getGasFeeValues(client as BundlerClient), - getUserOpStatus: (userOpHash: Hash) => - getUserOpStatus(client as BundlerClient, userOpHash) - }) - -export { bundlerActions } diff --git a/src/client/decorators/index.ts b/src/client/decorators/index.ts deleted file mode 100644 index cd790d044..000000000 --- a/src/client/decorators/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./bundler" -export * from "./paymaster" -export * from "./smartAccount" diff --git a/src/client/decorators/paymaster.ts b/src/client/decorators/paymaster.ts deleted file mode 100644 index b7bb81e62..000000000 --- a/src/client/decorators/paymaster.ts +++ /dev/null @@ -1,79 +0,0 @@ -import type { Client } from "viem" -import { getPaymasterFeeQuotesOrData } from "../../paymaster/actions/getPaymasterFeeQuotesOrData" -import { sponsorUserOperation } from "../../paymaster/actions/sponsorUserOperation" -import type { PaymasterClient } from "../../paymaster/createPaymasterClient" -import type { - FeeQuoteOrDataParameters, - FeeQuotesOrDataERC20Response, - FeeQuotesOrDataSponsoredResponse, - SponsorUserOperationParameters, - SponsorUserOperationReturnType -} from "../../paymaster/utils/types" - -export type PaymasterClientActions = { - /** - * Returns paymasterAndData & updated gas parameters required to sponsor a userOperation. - * - * - * @param args {@link SponsorUserOperationParameters} UserOperation you want to sponsor & entryPoint. - * @returns paymasterAndData & updated gas parameters, see {@link SponsorUserOperationReturnType} - * - * @example - * import { createClient } from "viem" - * import { paymasterActions } from "@biconomy/sdk" // TODO - * - * const bundlerClient = createClient({ - * chain: goerli, - * transport: http(paymasterUrl) - * }).extend(paymasterActions) - * - * await bundlerClient.sponsorUserOperation(bundlerClient, { - * userOperation: userOperationWithDummySignature, - * entryPoint: entryPoint - * }}) - * - */ - sponsorUserOperation: ( - args: SponsorUserOperationParameters - ) => Promise - - getPaymasterFeeQuotesOrData: ( - args: FeeQuoteOrDataParameters - ) => Promise - - /** - * Returns all the Paymaster addresses associated with an EntryPoint thatโ€™s owned by this service. - * - * - * @param args {@link AccountsParameters} entryPoint for which you want to get list of supported paymasters. - * @returns paymaster addresses - * - * @example - * import { createClient } from "viem" - * import { paymasterActions } from "@biconomy/sdk" // TODO - * - * const bundlerClient = createClient({ - * chain: goerli, - * transport: http(paymasterUrl) - * }).extend(paymasterActions) - * - * await bundlerClient.accounts(bundlerClient, { - * entryPoint: entryPoint - * }}) - * - */ - // accounts: (args: AccountsParameters) => Promise -} - -export const paymasterActions = - () => - (client: Client): PaymasterClientActions => ({ - sponsorUserOperation: async (args) => - sponsorUserOperation(client as PaymasterClient, { - ...args - }), - getPaymasterFeeQuotesOrData: async (args) => - getPaymasterFeeQuotesOrData(client as PaymasterClient, args) - // accounts: async (args) => - // accounts(client as PaymasterClient, args) - }) diff --git a/src/client/index.ts b/src/client/index.ts deleted file mode 100644 index d4fae98b8..000000000 --- a/src/client/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./createSmartAccountClient.js" -export * from "./decorators/index.js" -export * from "./utils/types" diff --git a/src/client/utils/types.ts b/src/client/utils/types.ts deleted file mode 100644 index 77a3763be..000000000 --- a/src/client/utils/types.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type { Address, Chain, ClientConfig, Hash, Hex, Transport } from "viem" -import type { Prettify } from "viem/chains" -import type { Middleware, SmartAccount } from "../../accounts/utils/types" -import type { TStatus } from "../../bundler" - -export type SmartAccountClientConfig< - transport extends Transport = Transport, - chain extends Chain | undefined = Chain | undefined, - account extends SmartAccount | undefined = SmartAccount | undefined -> = Prettify< - Pick< - ClientConfig, - "cacheTime" | "chain" | "key" | "name" | "pollingInterval" - > & - Middleware & { - account: account - bundlerTransport: Transport - } -> - -export type EstimateUserOperationGasReturnType = { - preVerificationGas: bigint - verificationGasLimit: bigint - callGasLimit: bigint -} - -export type GetUserOperationReceiptReturnType = { - userOpHash: Hash - sender: Address - nonce: bigint - actualGasUsed: bigint - actualGasCost: bigint - success: boolean - receipt: { - transactionHash: Hex - transactionIndex: bigint - blockHash: Hash - blockNumber: bigint - from: Address - to: Address | null - cumulativeGasUsed: bigint - status: TStatus - gasUsed: bigint - contractAddress: Address | null - logsBloom: Hex - effectiveGasPrice: bigint - } - logs: { - data: Hex - blockNumber: bigint - blockHash: Hash - transactionHash: Hash - logIndex: bigint - transactionIndex: bigint - address: Address - topics: Hex[] - }[] -} diff --git a/src/errors/getters/getBundlerError.ts b/src/errors/getters/getBundlerError.ts deleted file mode 100644 index b0172c128..000000000 --- a/src/errors/getters/getBundlerError.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { BaseError } from "viem" -import type { SendUserOperationParameters } from "../../accounts/actions/sendUserOperation" -import type { KnownError } from "../../accounts/utils/types" -import { buildErrorStrings } from "../helpers" -import { - ExecutionRevertedError, - type ExecutionRevertedErrorType, - UnknownNodeError, - type UnknownNodeErrorType -} from "../models" - -export const ERRORS_URL = "https://bcnmy.github.io/aa-errors/errors.json" -export const DOCS_URL = "https://docs.biconomy.io/troubleshooting/commonerrors" - -export const getBundlerError = async ( - err: BaseError, - args: SendUserOperationParameters -) => { - let errors: KnownError[] = [] - let message = err.details || "" - - try { - errors = (await (await fetch(ERRORS_URL)).json()) as KnownError[] - message = (JSON.parse(err.details)?.message || "").toLowerCase() - } catch (_) {} - - const executionRevertedError = - err instanceof BaseError - ? err.walk( - (e) => (e as { code: number }).code === ExecutionRevertedError.code - ) - : err - - if (executionRevertedError instanceof BaseError) { - return new ExecutionRevertedError({ - cause: err, - message: executionRevertedError.details - }) as ExecutionRevertedErrorType - } - - // TODO: Add validation Errors - if (args.userOperation.sender === undefined) - return new UnknownNodeError({ cause: err }) - if (args.userOperation.nonce === undefined) - return new UnknownNodeError({ cause: err }) - - const matchedError: KnownError | undefined = message - ? errors.find( - (error: KnownError) => message.toLowerCase().indexOf(error.regex) > -1 - ) - : undefined - - if (matchedError) { - const title = `${matchedError.regex.toUpperCase()}: ${matchedError.name}` - return new BaseError(title, { - cause: err, - metaMessages: buildErrorStrings(matchedError), - docsSlug: DOCS_URL - }) - } - - return new UnknownNodeError({ cause: err }) as UnknownNodeErrorType -} diff --git a/src/errors/getters/getEstimateUserOperationGasError.ts b/src/errors/getters/getEstimateUserOperationGasError.ts deleted file mode 100644 index ea0d0d022..000000000 --- a/src/errors/getters/getEstimateUserOperationGasError.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { type BaseError, UnknownNodeError } from "viem" -import type { EstimateUserOperationGasParameters } from "../../bundler/utils/types" -import { EstimateUserOperationGasError } from "../models" -import { getBundlerError } from "./getBundlerError" - -export async function getEstimateUserOperationGasError( - err: BaseError, - args: EstimateUserOperationGasParameters -) { - const getCause = async () => { - const cause = getBundlerError( - err as BaseError, - args as EstimateUserOperationGasParameters - ) - if (cause instanceof UnknownNodeError) return err as BaseError - return cause - } - - const causeResult = await getCause() - - throw new EstimateUserOperationGasError(causeResult, { ...args }) -} diff --git a/src/errors/getters/getSendUserOperationError.ts b/src/errors/getters/getSendUserOperationError.ts deleted file mode 100644 index 5cb6df341..000000000 --- a/src/errors/getters/getSendUserOperationError.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { type BaseError, UnknownNodeError } from "viem" -import type { SendUserOperationParameters } from "../../accounts/actions/sendUserOperation" -import { SendUserOperationError } from "../models" -import { getBundlerError } from "./getBundlerError" - -export async function getSendUserOperationError( - err: BaseError, - args: SendUserOperationParameters -) { - const getCause = async () => { - const cause = getBundlerError( - err as BaseError, - args as SendUserOperationParameters - ) - if (cause instanceof UnknownNodeError) return err as BaseError - return cause - } - - const causeResult = await getCause() - - throw new SendUserOperationError(causeResult, { - ...args - }) -} diff --git a/src/errors/getters/getSponsorUserOperationError.ts b/src/errors/getters/getSponsorUserOperationError.ts deleted file mode 100644 index be5ae36b7..000000000 --- a/src/errors/getters/getSponsorUserOperationError.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { type BaseError, UnknownNodeError } from "viem" -import { - PaymasterMode, - type SponsorUserOperationParameters -} from "../../paymaster/utils/types" -import { SponsorUserOperationError } from "../models/SponsorUserOperationError" -import { getBundlerError } from "./getBundlerError" - -export async function getSponsorUserOperationError( - err: BaseError, - args: SponsorUserOperationParameters -) { - const getCause = async () => { - const cause = getBundlerError( - err as BaseError, - args as SponsorUserOperationParameters - ) - if (cause instanceof UnknownNodeError) return err as BaseError - return cause - } - - const causeResult = await getCause() - - throw new SponsorUserOperationError(causeResult, { - ...args, - mode: PaymasterMode.SPONSORED - }) -} diff --git a/src/errors/getters/index.ts b/src/errors/getters/index.ts deleted file mode 100644 index 9166f261e..000000000 --- a/src/errors/getters/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { getEstimateUserOperationGasError } from "./getEstimateUserOperationGasError" -export { getSendUserOperationError } from "./getSendUserOperationError" -export { getBundlerError } from "./getBundlerError" -export { getSponsorUserOperationError } from "./getSponsorUserOperationError" diff --git a/src/errors/helpers.ts b/src/errors/helpers.ts deleted file mode 100644 index d6d07b94c..000000000 --- a/src/errors/helpers.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { KnownError } from "../accounts/utils/types" - -export function prettyPrint( - args: Record -) { - const entries = Object.entries(args) - .map(([key, value]) => { - if (value === undefined || value === false) return null - return [key, value] - }) - .filter(Boolean) as [string, string][] - const maxLength = entries.reduce((acc, [key]) => Math.max(acc, key.length), 0) - return entries - .map(([key, value]) => ` ${`${key}:`.padEnd(maxLength + 1)} ${value}`) - .join("\n") -} - -export const buildErrorStrings = (error: KnownError): string[] => - [ - `${error.description}\n`, - error.causes?.length - ? ["Potential cause(s): \n", ...error.causes, ""].join("\n") - : "", - error.solutions?.length - ? ["Potential solution(s): \n", ...error.solutions].join("\n") - : "" - ].filter(Boolean) diff --git a/src/errors/index.ts b/src/errors/index.ts deleted file mode 100644 index 87cd4b2bf..000000000 --- a/src/errors/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./getters" -export * from "./models" diff --git a/src/errors/models/EstimateUserOperationGasError.ts b/src/errors/models/EstimateUserOperationGasError.ts deleted file mode 100644 index ab4bdcffa..000000000 --- a/src/errors/models/EstimateUserOperationGasError.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { BaseError } from "viem" -import type { SendUserOperationParameters } from "../../accounts/actions/sendUserOperation" -import { prettyPrint } from "../helpers" - -export type EstimateUserOperationGasErrorType = - EstimateUserOperationGasError & { - name: "EstimateUserOperationGasError" - } -export class EstimateUserOperationGasError extends BaseError { - override cause: BaseError - - override name = "EstimateUserOperationGasError" - - constructor( - cause: BaseError, - { - userOperation, - docsPath - }: SendUserOperationParameters & { - docsPath?: string - } - ) { - const prettyArgs = prettyPrint({ - sender: userOperation.sender, - nonce: userOperation.nonce, - initCode: userOperation.initCode, - callData: userOperation.callData, - callGasLimit: userOperation.callGasLimit, - verificationGasLimit: userOperation.verificationGasLimit, - preVerificationGas: userOperation.preVerificationGas, - maxFeePerGas: userOperation.maxFeePerGas, - maxPriorityFeePerGas: userOperation.maxPriorityFeePerGas, - paymasterAndData: userOperation.paymasterAndData, - signature: userOperation.signature - }) - - super(cause.shortMessage, { - cause, - docsPath, - metaMessages: [ - ...(cause.metaMessages ? [...cause.metaMessages, " "] : []), - "Estimate Gas Arguments:", - prettyArgs - ].filter(Boolean) as string[] - }) - this.cause = cause - } -} diff --git a/src/errors/models/ExecutionRevertedError.ts b/src/errors/models/ExecutionRevertedError.ts deleted file mode 100644 index 0e1599d40..000000000 --- a/src/errors/models/ExecutionRevertedError.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { BaseError } from "viem" - -export type ExecutionRevertedErrorType = ExecutionRevertedError & { - code: 3 - name: "ExecutionRevertedError" -} -export class ExecutionRevertedError extends BaseError { - static code = 3 - static nodeMessage = /execution reverted/ - - override name = "ExecutionRevertedError" - - constructor({ - cause, - message - }: { cause?: BaseError; message?: string } = {}) { - const reason = message - ?.replace("execution reverted: ", "") - ?.replace("execution reverted", "") - super( - `Execution reverted ${ - reason ? `with reason: ${reason}` : "for an unknown reason" - }.`, - { - cause - } - ) - } -} diff --git a/src/errors/models/SendUserOperationError.ts b/src/errors/models/SendUserOperationError.ts deleted file mode 100644 index 2ef6fb60d..000000000 --- a/src/errors/models/SendUserOperationError.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { BaseError } from "viem" -import type { SendUserOperationParameters } from "../../accounts/actions/sendUserOperation" -import { prettyPrint } from "../helpers" - -export type SendUserOperationErrorType = SendUserOperationError & { - name: "SendUserOperationError" -} -export class SendUserOperationError extends BaseError { - override cause: BaseError - - override name = "SendUserOperationError" - - constructor( - cause: BaseError, - { - userOperation, - docsPath - }: SendUserOperationParameters & { - docsPath?: string - } - ) { - const prettyArgs = prettyPrint({ - sender: userOperation.sender, - nonce: userOperation.nonce, - initCode: userOperation.initCode, - callData: userOperation.callData, - callGasLimit: userOperation.callGasLimit, - verificationGasLimit: userOperation.verificationGasLimit, - preVerificationGas: userOperation.preVerificationGas, - maxFeePerGas: userOperation.maxFeePerGas, - maxPriorityFeePerGas: userOperation.maxPriorityFeePerGas, - paymasterAndData: userOperation.paymasterAndData, - signature: userOperation.signature - }) - - super(cause.shortMessage, { - cause, - docsPath, - metaMessages: [ - ...(cause.metaMessages ? [...cause.metaMessages, " "] : []), - "SendUserOperation Arguments:", - prettyArgs - ].filter(Boolean) as string[] - }) - this.cause = cause - } -} diff --git a/src/errors/models/SponsorUserOperationError.ts b/src/errors/models/SponsorUserOperationError.ts deleted file mode 100644 index 57278145f..000000000 --- a/src/errors/models/SponsorUserOperationError.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { BaseError } from "viem" -import type { SponsorUserOperationParameters } from "../../paymaster/utils/types" -import { prettyPrint } from "../helpers" - -export type SponsorUserOperationErrorType = SponsorUserOperationError & { - name: "SponsorUserOperationError" -} -export class SponsorUserOperationError extends BaseError { - override cause: BaseError - - override name = "SponsorUserOperationError" - - constructor( - cause: BaseError, - { - userOperation, - docsPath - }: SponsorUserOperationParameters & { - docsPath?: string - } - ) { - const prettyArgs = prettyPrint({ - sender: userOperation.sender, - nonce: userOperation.nonce, - initCode: userOperation.initCode, - callData: userOperation.callData, - callGasLimit: userOperation.callGasLimit, - verificationGasLimit: userOperation.verificationGasLimit, - preVerificationGas: userOperation.preVerificationGas, - maxFeePerGas: userOperation.maxFeePerGas, - maxPriorityFeePerGas: userOperation.maxPriorityFeePerGas, - paymasterAndData: userOperation.paymasterAndData, - signature: userOperation.signature - }) - - super(cause.shortMessage, { - cause, - docsPath, - metaMessages: [ - ...(cause.metaMessages ? [...cause.metaMessages, " "] : []), - "SponsorUserOperation Arguments:", - prettyArgs - ].filter(Boolean) as string[] - }) - this.cause = cause - } -} diff --git a/src/errors/models/UnknownNodeError.ts b/src/errors/models/UnknownNodeError.ts deleted file mode 100644 index dd71b6e29..000000000 --- a/src/errors/models/UnknownNodeError.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { BaseError } from "viem" - -export type UnknownNodeErrorType = UnknownNodeError & { - name: "UnknownNodeError" -} -export class UnknownNodeError extends BaseError { - override name = "UnknownNodeError" - - constructor({ cause }: { cause?: BaseError }) { - super(`An error occurred while executing: ${cause?.shortMessage}`, { - cause - }) - } -} diff --git a/src/errors/models/index.ts b/src/errors/models/index.ts deleted file mode 100644 index f25a20c87..000000000 --- a/src/errors/models/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -export { - ExecutionRevertedError, - type ExecutionRevertedErrorType -} from "./ExecutionRevertedError" - -export { - UnknownNodeError, - type UnknownNodeErrorType -} from "./UnknownNodeError" - -export { - SendUserOperationError, - type SendUserOperationErrorType -} from "./SendUserOperationError" - -export { - EstimateUserOperationGasError, - type EstimateUserOperationGasErrorType -} from "./EstimateUserOperationGasError" - -export { - SponsorUserOperationError, - type SponsorUserOperationErrorType -} from "./SponsorUserOperationError" diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 3047e3a48..000000000 --- a/src/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from "./accounts" -export * from "./errors" -export * from "./bundler" -export * from "./paymaster" -export * from "./client" -export * from "./modules" diff --git a/src/modules/ecdsaOwnershipValidationModule/createECDSAOwnershipModule.ts b/src/modules/ecdsaOwnershipValidationModule/createECDSAOwnershipModule.ts deleted file mode 100644 index 15ca654bc..000000000 --- a/src/modules/ecdsaOwnershipValidationModule/createECDSAOwnershipModule.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { type Hex, encodeFunctionData, parseAbi } from "viem" -import type { Prettify } from "viem/chains" - -import { - DEFAULT_ECDSA_OWNERSHIP_MODULE, - ECDSA_OWNERSHIP_MODULE_ADDRESSES_BY_VERSION, - ENTRYPOINT_ADDRESS_V06 -} from "../../accounts/utils/constants.js" -import type { SmartAccountSigner } from "../../accounts/utils/types.js" -import type { - BaseValidationModule, - ECDSAOwnershipValidationModuleConfig -} from "../utils/types.js" - -/** - * Creates an ECDSA Ownership Module. - * @param moduleConfig - The configuration for the module. - * @returns A promise that resolves to a BaseValidationModule. - */ -export const createECDSAOwnershipModule = async ( - moduleConfig: ECDSAOwnershipValidationModuleConfig -): Promise> => { - let moduleAddress!: Hex - - if (moduleConfig.moduleAddress) { - moduleAddress = moduleConfig.moduleAddress - } else if (moduleConfig.version) { - const moduleAddr = ECDSA_OWNERSHIP_MODULE_ADDRESSES_BY_VERSION[ - moduleConfig.version - ] as Hex - if (!moduleAddr) { - throw new Error(`Invalid version ${moduleConfig.version}`) - } - moduleAddress = moduleAddr - } else { - moduleAddress = DEFAULT_ECDSA_OWNERSHIP_MODULE - // Note: in this case Version remains the default one - } - - return { - entryPointAddress: moduleConfig.entryPointAddress ?? ENTRYPOINT_ADDRESS_V06, - /** - * Returns the address of the module. - * @returns {Hex} The address of the module. - */ - getModuleAddress(): Hex { - return moduleAddress - }, - /** - * Returns the signer of the smart account. - * @returns {Promise} A promise that resolves to the signer of the smart account. - */ - async getSigner(): Promise { - return Promise.resolve(moduleConfig.signer) - }, - - /** - * Returns a dummy signature. - * @returns {Promise} A promise that resolves to a dummy signature. - */ - async getDummySignature(): Promise { - const dynamicPart = moduleAddress.substring(2).padEnd(40, "0") - return `0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000${dynamicPart}000000000000000000000000000000000000000000000000000000000000004181d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b00000000000000000000000000000000000000000000000000000000000000` - }, - - /** - * Returns the initialization data for the ECDSA ownership module. - * @returns {Promise} A promise that resolves to the initialization data for the ECDSA ownership module. - */ - async getInitData(): Promise { - const ecdsaOwnerAddress = moduleConfig.signer.address - const moduleRegistryParsedAbi = parseAbi([ - "function initForSmartAccount(address owner)" - ]) - const ecdsaOwnershipInitData = encodeFunctionData({ - abi: moduleRegistryParsedAbi, - functionName: "initForSmartAccount", - args: [ecdsaOwnerAddress] - }) - return ecdsaOwnershipInitData - }, - - /** - * Signs the user operation hash. - * @param {string} userOpHash - The user operation hash to sign. - * @returns {Promise} A promise that resolves to the signature of the user operation hash. - */ - async signUserOpHash(userOpHash: string): Promise { - const sig = await moduleConfig.signer.signMessage({ message: userOpHash }) - return sig - }, - - /** - * Signs a message. - * @param {Uint8Array | string} _message - The message to sign. - * @returns {Promise} A promise that resolves to the signature of the message. - */ - async signMessage(_message: Uint8Array | string): Promise { - const message = - typeof _message === "string" ? _message : { raw: _message } - let signature = await moduleConfig.signer.signMessage({ message }) - - const potentiallyIncorrectV = Number.parseInt(signature.slice(-2), 16) - if (![27, 28].includes(potentiallyIncorrectV)) { - const correctV = potentiallyIncorrectV + 27 - signature = signature.slice(0, -2) + correctV.toString(16) - } - return signature - }, - - async signMessageSmartAccountSigner( - _message: string | Uint8Array, - signer: SmartAccountSigner - ): Promise { - const message = - typeof _message === "string" ? _message : { raw: _message } - let signature: `0x${string}` = await signer.signMessage({ message }) - - const potentiallyIncorrectV = Number.parseInt(signature.slice(-2), 16) - if (![27, 28].includes(potentiallyIncorrectV)) { - const correctV = potentiallyIncorrectV + 27 - signature = `0x${signature.slice(0, -2) + correctV.toString(16)}` - } - - return signature - } - } -} diff --git a/src/modules/index.ts b/src/modules/index.ts deleted file mode 100644 index 20d742817..000000000 --- a/src/modules/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./utils/types" -export * from "./ecdsaOwnershipValidationModule/createECDSAOwnershipModule.js" diff --git a/src/modules/sessionKeyManagerModule/createSessionKeyManagerModule.ts b/src/modules/sessionKeyManagerModule/createSessionKeyManagerModule.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/modules/utils/types.ts b/src/modules/utils/types.ts deleted file mode 100644 index eecf8b174..000000000 --- a/src/modules/utils/types.ts +++ /dev/null @@ -1,111 +0,0 @@ -import type { Address, Hex, LocalAccount } from "viem" - -import type { SmartAccountSigner } from "../../accounts/utils/types.js" - -export type BaseValidationModuleConfig = { - /** entryPointAddress: address of the entry point */ - entryPointAddress?: Hex -} - -export type ModuleInfo = { - version: 1 -} - -export type ModuleVersion = "V1_0_0" - -export type IValidationModule = { - getModuleAddress(): Hex - getInitData(): Promise - getSigner(): Promise - signUserOpHash(_userOpHash: string): Promise - signMessage(_message: string | Uint8Array): Promise - getDummySignature(): Promise -} - -/** - * Represents a base validation module. - */ -export type BaseValidationModule = IValidationModule & { - /** - * The entry point address. - */ - entryPointAddress: Hex - - /** - * Retrieves the module address. - * @returns The module address. - */ - getModuleAddress(): Hex - - /** - * Retrieves the initialization data. - * @returns A promise that resolves to the initialization data. - */ - getInitData(): Promise - - /** - * Retrieves a dummy signature. - * @param _params - The module information. - * @returns A promise that resolves to the dummy signature. - */ - getDummySignature(_params?: ModuleInfo): Promise - - /** - * Retrieves the signer. - * @returns A promise that resolves to the smart account signer. - */ - getSigner(): Promise - - /** - * Signs a user operation hash. - * @param _userOpHash - The user operation hash. - * @param _params - The module information. - * @returns A promise that resolves to the signature. - */ - signUserOpHash(_userOpHash: string, _params?: ModuleInfo): Promise - - /** - * Signs a message. - * @param _message - The message to sign. - * @returns A promise that resolves to the signature. - */ - signMessage(_message: Uint8Array | string): Promise - - /** - * Signs a message using a smart account signer. - * @param message - The message to sign. - * @param signer - The local account signer. - * @returns A promise that resolves to the signature. - */ - signMessageSmartAccountSigner( - message: string | Uint8Array, - signer: LocalAccount - ): Promise -} - -/** - * Interface for implementing a Session Validation Module. - * Session Validation Modules works along with SessionKeyManager - * and generate module specific sessionKeyData which is to be - * verified by SessionValidationModule on chain. - * - * @remarks sessionData is of generic type T which is specific to the module - * - * @author Sachin Tomar - */ -export type ISessionValidationModule = { - getSessionKeyData(_sessionData: T): Promise - getAddress(): string -} - -export type ECDSAOwnershipValidationModuleConfig = - BaseValidationModuleConfig & { - /** Address of the module */ - moduleAddress?: Hex - /** Version of the module */ - version?: ModuleVersion - /** Signer: viemWallet or ethers signer. Ingested when passed into smartAccount */ - signer: SmartAccountSigner - /** entryPointAddress: address of the entry point contract */ - entryPointAddress?: Address - } diff --git a/src/paymaster/actions/getPaymasterFeeQuotesOrData.ts b/src/paymaster/actions/getPaymasterFeeQuotesOrData.ts deleted file mode 100644 index ff22b0cc5..000000000 --- a/src/paymaster/actions/getPaymasterFeeQuotesOrData.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { PaymasterClient } from "../createPaymasterClient" -import { deepHexlify } from "../utils/helpers" -import type { - FeeQuoteOrDataParameters, - FeeQuotesOrDataERC20Response -} from "../utils/types" -import type { FeeQuotesOrDataSponsoredResponse } from "./../utils/types" - -export const getPaymasterFeeQuotesOrData = async ( - client: PaymasterClient, - args: FeeQuoteOrDataParameters -): Promise => { - const response = await client.request({ - method: "pm_getFeeQuoteOrData", - params: [ - deepHexlify(args.userOperation), - { - mode: args.mode, - calculateGasLimits: args.calculateGasLimits ?? true, - expiryDuration: args.expiryDuration, - tokenInfo: { - tokenList: args.tokenList ?? [], - preferredToken: args.preferredToken - }, - sponsorshipInfo: { - webhookData: args.webhookData, - smartAccountInfo: { - name: "BICONOMY", - version: "2.0.0" - } - } - } - ] - }) - - return response -} diff --git a/src/paymaster/actions/sponsorUserOperation.ts b/src/paymaster/actions/sponsorUserOperation.ts deleted file mode 100644 index 7875fbb47..000000000 --- a/src/paymaster/actions/sponsorUserOperation.ts +++ /dev/null @@ -1,52 +0,0 @@ -import type { BaseError } from "viem" -import type { BytesLike } from "../../accounts/utils/types" -import { getSponsorUserOperationError } from "../../errors/getters" -import type { PaymasterClient } from "../createPaymasterClient" -import { deepHexlify } from "../utils/helpers" -import type { - SponsorUserOperationParameters, - SponsorUserOperationReturnType -} from "../utils/types" - -export const sponsorUserOperation = async ( - client: PaymasterClient, - args: SponsorUserOperationParameters -): Promise => { - try { - const response = await client.request({ - method: "pm_sponsorUserOperation", - params: [ - deepHexlify(args.userOperation), - { - mode: args.mode, - calculateGasLimits: args.calculateGasLimits ?? true, - expiryDuration: args.expiryDuration, - tokenInfo: args.tokenInfo, - sponsorshipInfo: { - webhookData: args.webhookData, - smartAccountInfo: { - name: "BICONOMY", - version: "2.0.0" - } - } - } - ] - }) - - const responseV06 = response as { - paymasterAndData: BytesLike - preVerificationGas: string - verificationGasLimit: string - callGasLimit: string - } - - return { - paymasterAndData: responseV06.paymasterAndData, - preVerificationGas: responseV06.preVerificationGas, - verificationGasLimit: responseV06.verificationGasLimit, - callGasLimit: responseV06.callGasLimit - } as SponsorUserOperationReturnType - } catch (err) { - throw await getSponsorUserOperationError(err as BaseError, args) - } -} diff --git a/src/paymaster/createPaymasterClient.ts b/src/paymaster/createPaymasterClient.ts deleted file mode 100644 index 68e2abcc1..000000000 --- a/src/paymaster/createPaymasterClient.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { - type Account, - type Chain, - type Client, - type PublicClientConfig, - type Transport, - createClient -} from "viem" - -import { - type PaymasterClientActions, - paymasterActions -} from "../client/decorators/paymaster.js" -import type { PaymasterRpcSchema } from "./utils/types.js" - -export type PaymasterClient< - TChain extends Chain | undefined = Chain | undefined -> = Client< - Transport, - TChain, - Account | undefined, - PaymasterRpcSchema, - PaymasterClientActions -> - -/** - * Creates a Paymaster Client with a given [Transport](https://viem.sh/docs/clients/intro.html) configured for a [Chain](https://viem.sh/docs/clients/chains.html). - * - * A Paymaster Client is an interface to "paymaster endpoints" [JSON-RPC API](https://docs..io/reference/verifying-paymaster/endpoints) methods such as sponsoring user operation, etc through Paymaster Actions. - * - * @param config - {@link PublicClientConfig} - * @returns A Paymaster Client. {@link PaymasterClient} - * - * @example - * import { createPublicClient, http } from 'viem' - * import { polygonMumbai } from 'viem/chains' - * - * const PaymasterClient = createPaymasterClient({ - * chain: polygonMumbai, - * transport: http("https://paymaster.biconomy.io/api/v1/80001/YOUR_API_KEY_HERE"), - * }) - */ -export const createPaymasterClient = < - transport extends Transport = Transport, - chain extends Chain | undefined = undefined ->( - parameters: PublicClientConfig -): PaymasterClient => { - const { key = "public", name = "Paymaster Client" } = parameters - const client = createClient({ - ...parameters, - key, - name, - type: "PaymasterClient" - }) - return client.extend(paymasterActions()) -} diff --git a/src/paymaster/index.ts b/src/paymaster/index.ts deleted file mode 100644 index 827891827..000000000 --- a/src/paymaster/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./utils/types.js" -export * from "./createPaymasterClient.js" diff --git a/src/paymaster/utils/helpers.ts b/src/paymaster/utils/helpers.ts deleted file mode 100644 index aeef21639..000000000 --- a/src/paymaster/utils/helpers.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { toHex } from "viem" - -/** - * Extracts the chain ID from a paymaster URL. - * @param url - The bundler URL. - * @returns The extracted chain ID. - * @throws Error if the chain ID cannot be extracted or is invalid. - */ -export const extractChainIdFromPaymasterUrl = (url: string): number => { - try { - const regex = /\/api\/v\d+\/(\d+)\// - const match = regex.exec(url) - if (!match) { - throw new Error("Invalid URL format") - } - return Number.parseInt(match[1]) - } catch (error) { - throw new Error("Invalid chain id") - } -} - -// biome-ignore lint/suspicious/noExplicitAny: Difficult to type -export function deepHexlify(obj: any): any { - if (typeof obj === "function") { - return undefined - } - if (obj == null || typeof obj === "string" || typeof obj === "boolean") { - return obj - } - - if (typeof obj === "bigint") { - return toHex(obj) - } - - if (obj._isBigNumber != null || typeof obj !== "object") { - return toHex(obj).replace(/^0x0/, "0x") - } - if (Array.isArray(obj)) { - return obj.map((member) => deepHexlify(member)) - } - return Object.keys(obj).reduce( - // biome-ignore lint/suspicious/noExplicitAny: it's a recursive function, so it's hard to type - (set: any, key: string) => { - set[key] = deepHexlify(obj[key]) - return set - }, - {} - ) -} - -export const getTimestampInSeconds = (): number => { - return Math.floor(Date.now() / 1000) -} diff --git a/src/paymaster/utils/types.ts b/src/paymaster/utils/types.ts deleted file mode 100644 index cc8d804a1..000000000 --- a/src/paymaster/utils/types.ts +++ /dev/null @@ -1,173 +0,0 @@ -import type { Address, Hash, Hex } from "viem" -import type { PartialBy } from "viem/chains" -import type { - BigNumberish, - BytesLike, - UserOperationStruct -} from "../../accounts/utils/types" - -export type SponsorUserOperationReturnType = { - callGasLimit: string - verificationGasLimit: string - preVerificationGas: string - paymasterAndData: BytesLike -} - -export enum PaymasterMode { - ERC20 = "ERC20", - SPONSORED = "SPONSORED" -} - -export type FeeTokenInfo = { - feeTokenAddress: string -} - -export type SmartAccountInfo = { - /** name: Name of the smart account */ - name: string - /** version: Version of the smart account */ - version: string -} - -export type SponsorUserOperationParameters = { - userOperation: UserOperationStruct - mode: PaymasterMode - calculateGasLimits?: boolean - expiryDuration?: number - tokenInfo?: FeeTokenInfo - /** Webhooks to be fired after user op is sent */ - webhookData?: Record -} - -export type FeeQuoteOrDataParameters = { - userOperation: UserOperationStruct - /** mode: sponsored or erc20 */ - mode?: PaymasterMode - /** Expiry duration in seconds */ - expiryDuration?: number - /** Always recommended, especially when using token paymaster */ - calculateGasLimits?: boolean - /** List of tokens to be used for fee quotes, if ommitted fees for all supported will be returned */ - tokenList?: string[] - /** preferredToken: Can be ommitted to return all quotes */ - preferredToken?: string - /** Webhooks to be fired after user op is sent */ - webhookData?: Record - /** Smart account meta data */ - sponsorshipInfo?: { - smartAccountInfo: { - name: string - version: string - } - } -} - -export type FeeQuotesOrDataContext = { - mode: PaymasterMode | undefined - calculateGasLimits: boolean - expiryDuration: number | undefined - tokenInfo: { - tokenList: string[] - preferredToken: string | undefined - } - sponsorshipInfo: { - webhookData: Record | undefined - smartAccountInfo: SmartAccountInfo - } -} - -export type PaymasterContext = { - mode: PaymasterMode - calculateGasLimits: boolean - sponsorshipInfo: { - smartAccountInfo: { - name: string - version: string - } - } -} - -export type PaymasterFeeQuote = { - /** symbol: Token symbol */ - symbol: string - /** tokenAddress: Token address */ - tokenAddress: string - /** decimal: Token decimal */ - decimal: number - logoUrl?: string - /** maxGasFee: in wei */ - maxGasFee: number - /** maxGasFee: in dollars */ - maxGasFeeUSD?: number - usdPayment?: number - /** The premium paid on the token */ - premiumPercentage: number - /** validUntil: Unix timestamp */ - validUntil?: number -} - -export type FeeQuotesOrDataSponsoredResponse = { - mode: PaymasterMode - /** Normally set to the spender in the proceeding call to send the tx */ - paymasterAddress?: Hex - /** Relevant Data returned from the paymaster */ - paymasterAndData?: Uint8Array | Hex - /* Gas overhead of this UserOperation */ - preVerificationGas?: BigNumberish - /* Actual gas used by the validation of this UserOperation */ - verificationGasLimit?: BigNumberish - /* Value used by inner account execution */ - callGasLimit?: BigNumberish - userOpHash: Hash -} - -export type FeeQuotesOrDataERC20Response = { - mode: PaymasterMode - /** Array of results from the paymaster */ - feeQuotes?: PaymasterFeeQuote[] - /** Normally set to the spender in the proceeding call to send the tx */ - paymasterAddress?: Hex - /** Relevant Data returned from the paymaster */ - paymasterAndData?: Uint8Array | Hex - /* Gas overhead of this UserOperation */ - preVerificationGas?: BigNumberish - /* Actual gas used by the validation of this UserOperation */ - verificationGasLimit?: BigNumberish - /* Value used by inner account execution */ - callGasLimit?: BigNumberish -} - -export type PaymasterRpcSchema = [ - { - Method: "pm_sponsorUserOperation" - Parameters: [ - userOperation: PartialBy< - UserOperationStruct, - "callGasLimit" | "preVerificationGas" | "verificationGasLimit" - >, - context: PaymasterContext - ] - ReturnType: { - paymasterAndData: BytesLike - preVerificationGas: string - verificationGasLimit: string - callGasLimit: string - } - }, - { - Method: "pm_getFeeQuoteOrData" - Parameters: [ - userOperation: PartialBy< - UserOperationStruct, - "callGasLimit" | "preVerificationGas" | "verificationGasLimit" - >, - context: FeeQuotesOrDataContext - ] - ReturnType: FeeQuotesOrDataERC20Response | FeeQuotesOrDataSponsoredResponse - }, - { - Method: "pm_accounts" - Parameters: [entryPoint: Address] - ReturnType: Address[] - } -] diff --git a/src/sdk/__contracts/abi/EIP1271Abi.ts b/src/sdk/__contracts/abi/EIP1271Abi.ts new file mode 100644 index 000000000..304c5485b --- /dev/null +++ b/src/sdk/__contracts/abi/EIP1271Abi.ts @@ -0,0 +1,27 @@ +export const EIP1271Abi = [ + { + type: "function", + name: "eip712Domain", + inputs: [], + outputs: [ + { name: "fields", type: "bytes1", internalType: "bytes1" }, + { name: "name", type: "string", internalType: "string" }, + { name: "version", type: "string", internalType: "string" }, + { name: "chainId", type: "uint256", internalType: "uint256" }, + { name: "verifyingContract", type: "address", internalType: "address" }, + { name: "salt", type: "bytes32", internalType: "bytes32" }, + { name: "extensions", type: "uint256[]", internalType: "uint256[]" } + ], + stateMutability: "view" + }, + { + type: "function", + name: "isValidSignature", + inputs: [ + { name: "data", type: "bytes32", internalType: "bytes32" }, + { name: "signature", type: "bytes", internalType: "bytes" } + ], + outputs: [{ name: "magicValue", type: "bytes4", internalType: "bytes4" }], + stateMutability: "view" + } +] as const diff --git a/src/sdk/__contracts/abi/EntryPointABI.ts b/src/sdk/__contracts/abi/EntryPointABI.ts new file mode 100644 index 000000000..674ada997 --- /dev/null +++ b/src/sdk/__contracts/abi/EntryPointABI.ts @@ -0,0 +1,657 @@ +export const EntrypointAbi = [ + { + inputs: [ + { internalType: "bool", name: "success", type: "bool" }, + { internalType: "bytes", name: "ret", type: "bytes" } + ], + name: "DelegateAndRevert", + type: "error" + }, + { + inputs: [ + { internalType: "uint256", name: "opIndex", type: "uint256" }, + { internalType: "string", name: "reason", type: "string" } + ], + name: "FailedOp", + type: "error" + }, + { + inputs: [ + { internalType: "uint256", name: "opIndex", type: "uint256" }, + { internalType: "string", name: "reason", type: "string" }, + { internalType: "bytes", name: "inner", type: "bytes" } + ], + name: "FailedOpWithRevert", + type: "error" + }, + { + inputs: [{ internalType: "bytes", name: "returnData", type: "bytes" }], + name: "PostOpReverted", + type: "error" + }, + { inputs: [], name: "ReentrancyGuardReentrantCall", type: "error" }, + { + inputs: [{ internalType: "address", name: "sender", type: "address" }], + name: "SenderAddressResult", + type: "error" + }, + { + inputs: [{ internalType: "address", name: "aggregator", type: "address" }], + name: "SignatureValidationFailed", + type: "error" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "userOpHash", + type: "bytes32" + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address" + }, + { + indexed: false, + internalType: "address", + name: "factory", + type: "address" + }, + { + indexed: false, + internalType: "address", + name: "paymaster", + type: "address" + } + ], + name: "AccountDeployed", + type: "event" + }, + { anonymous: false, inputs: [], name: "BeforeExecution", type: "event" }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "totalDeposit", + type: "uint256" + } + ], + name: "Deposited", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "userOpHash", + type: "bytes32" + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "nonce", + type: "uint256" + }, + { + indexed: false, + internalType: "bytes", + name: "revertReason", + type: "bytes" + } + ], + name: "PostOpRevertReason", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "aggregator", + type: "address" + } + ], + name: "SignatureAggregatorChanged", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "totalStaked", + type: "uint256" + }, + { + indexed: false, + internalType: "uint256", + name: "unstakeDelaySec", + type: "uint256" + } + ], + name: "StakeLocked", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "withdrawTime", + type: "uint256" + } + ], + name: "StakeUnlocked", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address" + }, + { + indexed: false, + internalType: "address", + name: "withdrawAddress", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "StakeWithdrawn", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "userOpHash", + type: "bytes32" + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "paymaster", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "nonce", + type: "uint256" + }, + { indexed: false, internalType: "bool", name: "success", type: "bool" }, + { + indexed: false, + internalType: "uint256", + name: "actualGasCost", + type: "uint256" + }, + { + indexed: false, + internalType: "uint256", + name: "actualGasUsed", + type: "uint256" + } + ], + name: "UserOperationEvent", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "userOpHash", + type: "bytes32" + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "nonce", + type: "uint256" + } + ], + name: "UserOperationPrefundTooLow", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "userOpHash", + type: "bytes32" + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "nonce", + type: "uint256" + }, + { + indexed: false, + internalType: "bytes", + name: "revertReason", + type: "bytes" + } + ], + name: "UserOperationRevertReason", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address" + }, + { + indexed: false, + internalType: "address", + name: "withdrawAddress", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "Withdrawn", + type: "event" + }, + { + inputs: [ + { internalType: "uint32", name: "unstakeDelaySec", type: "uint32" } + ], + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [{ internalType: "address", name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { internalType: "address", name: "target", type: "address" }, + { internalType: "bytes", name: "data", type: "bytes" } + ], + name: "delegateAndRevert", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [{ internalType: "address", name: "account", type: "address" }], + name: "depositTo", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [{ internalType: "address", name: "", type: "address" }], + name: "deposits", + outputs: [ + { internalType: "uint256", name: "deposit", type: "uint256" }, + { internalType: "bool", name: "staked", type: "bool" }, + { internalType: "uint112", name: "stake", type: "uint112" }, + { internalType: "uint32", name: "unstakeDelaySec", type: "uint32" }, + { internalType: "uint48", name: "withdrawTime", type: "uint48" } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [{ internalType: "address", name: "account", type: "address" }], + name: "getDepositInfo", + outputs: [ + { + components: [ + { internalType: "uint256", name: "deposit", type: "uint256" }, + { internalType: "bool", name: "staked", type: "bool" }, + { internalType: "uint112", name: "stake", type: "uint112" }, + { internalType: "uint32", name: "unstakeDelaySec", type: "uint32" }, + { internalType: "uint48", name: "withdrawTime", type: "uint48" } + ], + internalType: "struct IStakeManager.DepositInfo", + name: "info", + type: "tuple" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "uint192", name: "key", type: "uint192" } + ], + name: "getNonce", + outputs: [{ internalType: "uint256", name: "nonce", type: "uint256" }], + stateMutability: "view", + type: "function" + }, + { + inputs: [{ internalType: "bytes", name: "initCode", type: "bytes" }], + name: "getSenderAddress", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + components: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "uint256", name: "nonce", type: "uint256" }, + { internalType: "bytes", name: "initCode", type: "bytes" }, + { internalType: "bytes", name: "callData", type: "bytes" }, + { + internalType: "bytes32", + name: "accountGasLimits", + type: "bytes32" + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256" + }, + { internalType: "bytes32", name: "gasFees", type: "bytes32" }, + { internalType: "bytes", name: "paymasterAndData", type: "bytes" }, + { internalType: "bytes", name: "signature", type: "bytes" } + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple" + } + ], + name: "getUserOpHash", + outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + components: [ + { + components: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "uint256", name: "nonce", type: "uint256" }, + { internalType: "bytes", name: "initCode", type: "bytes" }, + { internalType: "bytes", name: "callData", type: "bytes" }, + { + internalType: "bytes32", + name: "accountGasLimits", + type: "bytes32" + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256" + }, + { internalType: "bytes32", name: "gasFees", type: "bytes32" }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes" + }, + { internalType: "bytes", name: "signature", type: "bytes" } + ], + internalType: "struct PackedUserOperation[]", + name: "userOps", + type: "tuple[]" + }, + { + internalType: "contract IAggregator", + name: "aggregator", + type: "address" + }, + { internalType: "bytes", name: "signature", type: "bytes" } + ], + internalType: "struct IEntryPoint.UserOpsPerAggregator[]", + name: "opsPerAggregator", + type: "tuple[]" + }, + { internalType: "address payable", name: "beneficiary", type: "address" } + ], + name: "handleAggregatedOps", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + components: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "uint256", name: "nonce", type: "uint256" }, + { internalType: "bytes", name: "initCode", type: "bytes" }, + { internalType: "bytes", name: "callData", type: "bytes" }, + { + internalType: "bytes32", + name: "accountGasLimits", + type: "bytes32" + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256" + }, + { internalType: "bytes32", name: "gasFees", type: "bytes32" }, + { internalType: "bytes", name: "paymasterAndData", type: "bytes" }, + { internalType: "bytes", name: "signature", type: "bytes" } + ], + internalType: "struct PackedUserOperation[]", + name: "ops", + type: "tuple[]" + }, + { internalType: "address payable", name: "beneficiary", type: "address" } + ], + name: "handleOps", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [{ internalType: "uint192", name: "key", type: "uint192" }], + name: "incrementNonce", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { internalType: "bytes", name: "callData", type: "bytes" }, + { + components: [ + { + components: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "uint256", name: "nonce", type: "uint256" }, + { + internalType: "uint256", + name: "verificationGasLimit", + type: "uint256" + }, + { + internalType: "uint256", + name: "callGasLimit", + type: "uint256" + }, + { + internalType: "uint256", + name: "paymasterVerificationGasLimit", + type: "uint256" + }, + { + internalType: "uint256", + name: "paymasterPostOpGasLimit", + type: "uint256" + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256" + }, + { internalType: "address", name: "paymaster", type: "address" }, + { + internalType: "uint256", + name: "maxFeePerGas", + type: "uint256" + }, + { + internalType: "uint256", + name: "maxPriorityFeePerGas", + type: "uint256" + } + ], + internalType: "struct EntryPoint.MemoryUserOp", + name: "mUserOp", + type: "tuple" + }, + { internalType: "bytes32", name: "userOpHash", type: "bytes32" }, + { internalType: "uint256", name: "prefund", type: "uint256" }, + { internalType: "uint256", name: "contextOffset", type: "uint256" }, + { internalType: "uint256", name: "preOpGas", type: "uint256" } + ], + internalType: "struct EntryPoint.UserOpInfo", + name: "opInfo", + type: "tuple" + }, + { internalType: "bytes", name: "context", type: "bytes" } + ], + name: "innerHandleOp", + outputs: [ + { internalType: "uint256", name: "actualGasCost", type: "uint256" } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { internalType: "address", name: "", type: "address" }, + { internalType: "uint192", name: "", type: "uint192" } + ], + name: "nonceSequenceNumber", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function" + }, + { + inputs: [{ internalType: "bytes4", name: "interfaceId", type: "bytes4" }], + name: "supportsInterface", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "unlockStake", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address payable", + name: "withdrawAddress", + type: "address" + } + ], + name: "withdrawStake", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address payable", + name: "withdrawAddress", + type: "address" + }, + { internalType: "uint256", name: "withdrawAmount", type: "uint256" } + ], + name: "withdrawTo", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { stateMutability: "payable", type: "receive" } +] as const diff --git a/src/sdk/__contracts/abi/K1ValidatorAbi.ts b/src/sdk/__contracts/abi/K1ValidatorAbi.ts new file mode 100644 index 000000000..1e633578c --- /dev/null +++ b/src/sdk/__contracts/abi/K1ValidatorAbi.ts @@ -0,0 +1,320 @@ +export const K1ValidatorAbi = [ + { + inputs: [], + name: "InvalidDataLength", + type: "error" + }, + { + inputs: [], + name: "ModuleAlreadyInitialized", + type: "error" + }, + { + inputs: [], + name: "NewOwnerIsContract", + type: "error" + }, + { + inputs: [], + name: "NoOwnerProvided", + type: "error" + }, + { + inputs: [], + name: "ZeroAddressNotAllowed", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "smartAccount", + type: "address" + } + ], + name: "isInitialized", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "uint256", + name: "typeID", + type: "uint256" + } + ], + name: "isModuleType", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address" + }, + { + internalType: "bytes32", + name: "hash", + type: "bytes32" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "isValidSignatureWithSender", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address" + }, + { + internalType: "bytes32", + name: "hash", + type: "bytes32" + }, + { + internalType: "bytes", + name: "signature", + type: "bytes" + } + ], + name: "isValidSignatureWithSenderLegacy", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "onInstall", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "", + type: "bytes" + } + ], + name: "onUninstall", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + name: "smartAccountOwners", + outputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "supportsNestedTypedDataSign", + outputs: [ + { + internalType: "bytes32", + name: "result", + type: "bytes32" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address" + } + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes32", + name: "hash", + type: "bytes32" + }, + { + internalType: "bytes", + name: "sig", + type: "bytes" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "validateSignatureWithData", + outputs: [ + { + internalType: "bool", + name: "validSig", + type: "bool" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "uint256", + name: "nonce", + type: "uint256" + }, + { + internalType: "bytes", + name: "initCode", + type: "bytes" + }, + { + internalType: "bytes", + name: "callData", + type: "bytes" + }, + { + internalType: "bytes32", + name: "accountGasLimits", + type: "bytes32" + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256" + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32" + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes" + }, + { + internalType: "bytes", + name: "signature", + type: "bytes" + } + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple" + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32" + } + ], + name: "validateUserOp", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "version", + outputs: [ + { + internalType: "string", + name: "", + type: "string" + } + ], + stateMutability: "pure", + type: "function" + } +] as const diff --git a/src/sdk/__contracts/abi/K1ValidatorFactoryAbi.ts b/src/sdk/__contracts/abi/K1ValidatorFactoryAbi.ts new file mode 100644 index 000000000..f501b0a06 --- /dev/null +++ b/src/sdk/__contracts/abi/K1ValidatorFactoryAbi.ts @@ -0,0 +1,386 @@ +export const K1ValidatorFactoryAbi = [ + { + inputs: [ + { + internalType: "address", + name: "implementation", + type: "address" + }, + { + internalType: "address", + name: "factoryOwner", + type: "address" + }, + { + internalType: "address", + name: "k1Validator", + type: "address" + }, + { + internalType: "contract Bootstrap", + name: "bootstrapper", + type: "address" + }, + { + internalType: "contract IERC7484", + name: "registry", + type: "address" + } + ], + stateMutability: "nonpayable", + type: "constructor" + }, + { + inputs: [], + name: "AlreadyInitialized", + type: "error" + }, + { + inputs: [], + name: "InnerCallFailed", + type: "error" + }, + { + inputs: [], + name: "InvalidEntryPointAddress", + type: "error" + }, + { + inputs: [], + name: "NewOwnerIsZeroAddress", + type: "error" + }, + { + inputs: [], + name: "NoHandoverRequest", + type: "error" + }, + { + inputs: [], + name: "Unauthorized", + type: "error" + }, + { + inputs: [], + name: "ZeroAddressNotAllowed", + type: "error" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "owner", + type: "address" + }, + { + indexed: true, + internalType: "uint256", + name: "index", + type: "uint256" + } + ], + name: "AccountCreated", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "OwnershipHandoverCanceled", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "OwnershipHandoverRequested", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldOwner", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address" + } + ], + name: "OwnershipTransferred", + type: "event" + }, + { + inputs: [], + name: "ACCOUNT_IMPLEMENTATION", + outputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "BOOTSTRAPPER", + outputs: [ + { + internalType: "contract Bootstrap", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "K1_VALIDATOR", + outputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "REGISTRY", + outputs: [ + { + internalType: "contract IERC7484", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + }, + { + internalType: "uint32", + name: "unstakeDelaySec", + type: "uint32" + } + ], + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "cancelOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "completeOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "eoaOwner", + type: "address" + }, + { + internalType: "uint256", + name: "index", + type: "uint256" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + }, + { + internalType: "uint8", + name: "threshold", + type: "uint8" + } + ], + name: "computeAccountAddress", + outputs: [ + { + internalType: "address payable", + name: "expectedAddress", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "eoaOwner", + type: "address" + }, + { + internalType: "uint256", + name: "index", + type: "uint256" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + }, + { + internalType: "uint8", + name: "threshold", + type: "uint8" + } + ], + name: "createAccount", + outputs: [ + { + internalType: "address payable", + name: "", + type: "address" + } + ], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "result", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "ownershipHandoverExpiresAt", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "requestOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address" + } + ], + name: "transferOwnership", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + } + ], + name: "unlockStake", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + }, + { + internalType: "address payable", + name: "withdrawAddress", + type: "address" + } + ], + name: "withdrawStake", + outputs: [], + stateMutability: "nonpayable", + type: "function" + } +] as const diff --git a/src/sdk/__contracts/abi/NexusAbi.ts b/src/sdk/__contracts/abi/NexusAbi.ts new file mode 100644 index 000000000..ce1bed919 --- /dev/null +++ b/src/sdk/__contracts/abi/NexusAbi.ts @@ -0,0 +1,1215 @@ +export const NexusAbi = [ + { + inputs: [ + { + internalType: "address", + name: "anEntryPoint", + type: "address" + } + ], + stateMutability: "nonpayable", + type: "constructor" + }, + { + inputs: [], + name: "AccountAccessUnauthorized", + type: "error" + }, + { + inputs: [], + name: "CanNotRemoveLastValidator", + type: "error" + }, + { + inputs: [], + name: "EmergencyTimeLockNotExpired", + type: "error" + }, + { + inputs: [], + name: "EnableModeSigError", + type: "error" + }, + { + inputs: [], + name: "EntryPointCanNotBeZero", + type: "error" + }, + { + inputs: [], + name: "ExecutionFailed", + type: "error" + }, + { + inputs: [ + { + internalType: "bytes4", + name: "selector", + type: "bytes4" + } + ], + name: "FallbackAlreadyInstalledForSelector", + type: "error" + }, + { + inputs: [], + name: "FallbackCallTypeInvalid", + type: "error" + }, + { + inputs: [], + name: "FallbackHandlerUninstallFailed", + type: "error" + }, + { + inputs: [ + { + internalType: "bytes4", + name: "selector", + type: "bytes4" + } + ], + name: "FallbackNotInstalledForSelector", + type: "error" + }, + { + inputs: [], + name: "FallbackSelectorForbidden", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "currentHook", + type: "address" + } + ], + name: "HookAlreadyInstalled", + type: "error" + }, + { + inputs: [], + name: "HookPostCheckFailed", + type: "error" + }, + { + inputs: [], + name: "ImplementationIsNotAContract", + type: "error" + }, + { + inputs: [], + name: "InnerCallFailed", + type: "error" + }, + { + inputs: [], + name: "InvalidImplementationAddress", + type: "error" + }, + { + inputs: [], + name: "InvalidInput", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address" + } + ], + name: "InvalidModule", + type: "error" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + } + ], + name: "InvalidModuleTypeId", + type: "error" + }, + { + inputs: [], + name: "LinkedList_AlreadyInitialized", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "entry", + type: "address" + } + ], + name: "LinkedList_EntryAlreadyInList", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "entry", + type: "address" + } + ], + name: "LinkedList_InvalidEntry", + type: "error" + }, + { + inputs: [], + name: "LinkedList_InvalidPage", + type: "error" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + } + ], + name: "MismatchModuleTypeId", + type: "error" + }, + { + inputs: [ + { + internalType: "bytes4", + name: "selector", + type: "bytes4" + } + ], + name: "MissingFallbackHandler", + type: "error" + }, + { + inputs: [], + name: "ModuleAddressCanNotBeZero", + type: "error" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + }, + { + internalType: "address", + name: "module", + type: "address" + } + ], + name: "ModuleAlreadyInstalled", + type: "error" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + }, + { + internalType: "address", + name: "module", + type: "address" + } + ], + name: "ModuleNotInstalled", + type: "error" + }, + { + inputs: [], + name: "NexusInitializationFailed", + type: "error" + }, + { + inputs: [], + name: "NoValidatorInstalled", + type: "error" + }, + { + inputs: [], + name: "UnauthorizedCallContext", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address" + } + ], + name: "UnauthorizedOperation", + type: "error" + }, + { + inputs: [ + { + internalType: "CallType", + name: "callType", + type: "bytes1" + } + ], + name: "UnsupportedCallType", + type: "error" + }, + { + inputs: [ + { + internalType: "ExecType", + name: "execType", + type: "bytes1" + } + ], + name: "UnsupportedExecType", + type: "error" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + } + ], + name: "UnsupportedModuleType", + type: "error" + }, + { + inputs: [], + name: "UpgradeFailed", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address" + } + ], + name: "ValidatorNotInstalled", + type: "error" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract IERC7484", + name: "registry", + type: "address" + } + ], + name: "ERC7484RegistryConfigured", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "hook", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "timestamp", + type: "uint256" + } + ], + name: "EmergencyHookUninstallRequest", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + components: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "uint256", + name: "nonce", + type: "uint256" + }, + { + internalType: "bytes", + name: "initCode", + type: "bytes" + }, + { + internalType: "bytes", + name: "callData", + type: "bytes" + }, + { + internalType: "bytes32", + name: "accountGasLimits", + type: "bytes32" + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256" + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32" + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes" + }, + { + internalType: "bytes", + name: "signature", + type: "bytes" + } + ], + indexed: false, + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple" + }, + { + indexed: false, + internalType: "bytes", + name: "innerCallRet", + type: "bytes" + } + ], + name: "Executed", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + }, + { + indexed: false, + internalType: "address", + name: "module", + type: "address" + } + ], + name: "ModuleInstalled", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + }, + { + indexed: false, + internalType: "address", + name: "module", + type: "address" + } + ], + name: "ModuleUninstalled", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes", + name: "callData", + type: "bytes" + }, + { + indexed: false, + internalType: "bytes", + name: "result", + type: "bytes" + } + ], + name: "TryDelegateCallUnsuccessful", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes", + name: "callData", + type: "bytes" + }, + { + indexed: false, + internalType: "bytes", + name: "result", + type: "bytes" + } + ], + name: "TryExecuteUnsuccessful", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "implementation", + type: "address" + } + ], + name: "Upgraded", + type: "event" + }, + { + stateMutability: "payable", + type: "fallback" + }, + { + inputs: [], + name: "DOMAIN_SEPARATOR", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "accountId", + outputs: [ + { + internalType: "string", + name: "", + type: "string" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [], + name: "addDeposit", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "eip712Domain", + outputs: [ + { + internalType: "bytes1", + name: "fields", + type: "bytes1" + }, + { + internalType: "string", + name: "name", + type: "string" + }, + { + internalType: "string", + name: "version", + type: "string" + }, + { + internalType: "uint256", + name: "chainId", + type: "uint256" + }, + { + internalType: "address", + name: "verifyingContract", + type: "address" + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32" + }, + { + internalType: "uint256[]", + name: "extensions", + type: "uint256[]" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "hook", + type: "address" + }, + { + internalType: "bytes", + name: "deInitData", + type: "bytes" + } + ], + name: "emergencyUninstallHook", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "entryPoint", + outputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "ExecutionMode", + name: "mode", + type: "bytes32" + }, + { + internalType: "bytes", + name: "executionCalldata", + type: "bytes" + } + ], + name: "execute", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "ExecutionMode", + name: "mode", + type: "bytes32" + }, + { + internalType: "bytes", + name: "executionCalldata", + type: "bytes" + } + ], + name: "executeFromExecutor", + outputs: [ + { + internalType: "bytes[]", + name: "returnData", + type: "bytes[]" + } + ], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "uint256", + name: "nonce", + type: "uint256" + }, + { + internalType: "bytes", + name: "initCode", + type: "bytes" + }, + { + internalType: "bytes", + name: "callData", + type: "bytes" + }, + { + internalType: "bytes32", + name: "accountGasLimits", + type: "bytes32" + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256" + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32" + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes" + }, + { + internalType: "bytes", + name: "signature", + type: "bytes" + } + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple" + }, + { + internalType: "bytes32", + name: "", + type: "bytes32" + } + ], + name: "executeUserOp", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "getActiveHook", + outputs: [ + { + internalType: "address", + name: "hook", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "getDeposit", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "cursor", + type: "address" + }, + { + internalType: "uint256", + name: "size", + type: "uint256" + } + ], + name: "getExecutorsPaginated", + outputs: [ + { + internalType: "address[]", + name: "array", + type: "address[]" + }, + { + internalType: "address", + name: "next", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes4", + name: "selector", + type: "bytes4" + } + ], + name: "getFallbackHandlerBySelector", + outputs: [ + { + internalType: "CallType", + name: "", + type: "bytes1" + }, + { + internalType: "address", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "getImplementation", + outputs: [ + { + internalType: "address", + name: "implementation", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "cursor", + type: "address" + }, + { + internalType: "uint256", + name: "size", + type: "uint256" + } + ], + name: "getValidatorsPaginated", + outputs: [ + { + internalType: "address[]", + name: "array", + type: "address[]" + }, + { + internalType: "address", + name: "next", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes32", + name: "structHash", + type: "bytes32" + } + ], + name: "hashTypedData", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "initData", + type: "bytes" + } + ], + name: "initializeAccount", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + }, + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "initData", + type: "bytes" + } + ], + name: "installModule", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + }, + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "additionalContext", + type: "bytes" + } + ], + name: "isModuleInstalled", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes32", + name: "hash", + type: "bytes32" + }, + { + internalType: "bytes", + name: "signature", + type: "bytes" + } + ], + name: "isValidSignature", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "uint192", + name: "key", + type: "uint192" + } + ], + name: "nonce", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "proxiableUUID", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "registry", + outputs: [ + { + internalType: "contract IERC7484", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "contract IERC7484", + name: "newRegistry", + type: "address" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + }, + { + internalType: "uint8", + name: "threshold", + type: "uint8" + } + ], + name: "setRegistry", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "ExecutionMode", + name: "mode", + type: "bytes32" + } + ], + name: "supportsExecutionMode", + outputs: [ + { + internalType: "bool", + name: "isSupported", + type: "bool" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + } + ], + name: "supportsModule", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "supportsNestedTypedDataSign", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "validator", + type: "address" + } + ], + name: "supportsNestedTypedDataSignWithValidator", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + }, + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "deInitData", + type: "bytes" + } + ], + name: "uninstallModule", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "newImplementation", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "upgradeToAndCall", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "uint256", + name: "nonce", + type: "uint256" + }, + { + internalType: "bytes", + name: "initCode", + type: "bytes" + }, + { + internalType: "bytes", + name: "callData", + type: "bytes" + }, + { + internalType: "bytes32", + name: "accountGasLimits", + type: "bytes32" + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256" + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32" + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes" + }, + { + internalType: "bytes", + name: "signature", + type: "bytes" + } + ], + internalType: "struct PackedUserOperation", + name: "op", + type: "tuple" + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32" + }, + { + internalType: "uint256", + name: "missingAccountFunds", + type: "uint256" + } + ], + name: "validateUserOp", + outputs: [ + { + internalType: "uint256", + name: "validationData", + type: "uint256" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address" + }, + { + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "withdrawDepositTo", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + stateMutability: "payable", + type: "receive" + } +] as const diff --git a/src/sdk/__contracts/abi/UniActionPolicyAbi.ts b/src/sdk/__contracts/abi/UniActionPolicyAbi.ts new file mode 100644 index 000000000..f3d352dd9 --- /dev/null +++ b/src/sdk/__contracts/abi/UniActionPolicyAbi.ts @@ -0,0 +1,58 @@ +export const UniActionPolicyAbi = [ + { + components: [ + { + name: "valueLimitPerUse", + type: "uint256" + }, + { + components: [ + { + name: "length", + type: "uint256" + }, + { + components: [ + { + name: "condition", + type: "uint8" + }, + { + name: "offset", + type: "uint64" + }, + { + name: "isLimited", + type: "bool" + }, + { + name: "ref", + type: "bytes32" + }, + { + components: [ + { + name: "limit", + type: "uint256" + }, + { + name: "used", + type: "uint256" + } + ], + name: "usage", + type: "tuple" + } + ], + name: "rules", + type: "tuple[]" + } + ], + name: "paramRules", + type: "tuple" + } + ], + name: "ActionConfig", + type: "tuple" + } +] as const diff --git a/src/sdk/__contracts/abi/index.ts b/src/sdk/__contracts/abi/index.ts new file mode 100644 index 000000000..27aecc585 --- /dev/null +++ b/src/sdk/__contracts/abi/index.ts @@ -0,0 +1,6 @@ +export * from "./UniActionPolicyAbi" +export * from "./EntryPointABI" +export * from "./EIP1271Abi" +export * from "./NexusAbi" +export * from "./K1ValidatorAbi" +export * from "./K1ValidatorFactoryAbi" diff --git a/src/sdk/__contracts/addresses.ts b/src/sdk/__contracts/addresses.ts new file mode 100644 index 000000000..ed316626d --- /dev/null +++ b/src/sdk/__contracts/addresses.ts @@ -0,0 +1,9 @@ +// The contents of this folder is auto-generated. Please do not edit as your changes are likely to be overwritten + +export const addresses = { + Nexus: "0x21f4C007C9f091B93B7C1C6911E13ACcd3DAd403", + K1Validator: "0x6854688d3D9A87a33Addd5f4deB5cea1B97fa5b7", + K1ValidatorFactory: "0x976869CF9c5Dd5046b41963EF1bBcE62b5366869", + UniActionPolicy: "0x28120dC008C36d95DE5fa0603526f219c1Ba80f6" +} as const +export default addresses diff --git a/src/sdk/__contracts/index.ts b/src/sdk/__contracts/index.ts new file mode 100644 index 000000000..38595002c --- /dev/null +++ b/src/sdk/__contracts/index.ts @@ -0,0 +1,35 @@ +import type { Hex } from "viem" +import { entryPoint07Address } from "viem/account-abstraction" +import { EntrypointAbi, K1ValidatorAbi, K1ValidatorFactoryAbi } from "./abi" +import addresses from "./addresses" + +export const ENTRYPOINT_SIMULATIONS: Hex = + "0x74Cb5e4eE81b86e70f9045036a1C5477de69eE87" + +const entryPoint = { + address: entryPoint07Address, + abi: EntrypointAbi +} as const + +const entryPointSimulations = { + address: ENTRYPOINT_SIMULATIONS +} as const + +const k1ValidatorFactory = { + address: addresses.K1ValidatorFactory, + abi: K1ValidatorFactoryAbi +} as const + +const k1Validator = { + address: addresses.K1Validator, + abi: K1ValidatorAbi +} as const + +export const contracts = { + entryPoint, + entryPointSimulations, + k1ValidatorFactory, + k1Validator +} as const + +export default contracts diff --git a/src/sdk/account/index.ts b/src/sdk/account/index.ts new file mode 100644 index 000000000..57756f3eb --- /dev/null +++ b/src/sdk/account/index.ts @@ -0,0 +1,2 @@ +export * from "./utils/index.js" +export * from "./toNexusAccount.js" diff --git a/src/sdk/account/toNexusAccount.test.ts b/src/sdk/account/toNexusAccount.test.ts new file mode 100644 index 000000000..42d58a347 --- /dev/null +++ b/src/sdk/account/toNexusAccount.test.ts @@ -0,0 +1,376 @@ +import { + http, + type Account, + type Address, + type Chain, + type Hex, + type PublicClient, + type WalletClient, + concat, + concatHex, + createWalletClient, + domainSeparator, + encodeAbiParameters, + encodePacked, + hashMessage, + isAddress, + isHex, + keccak256, + parseAbi, + parseAbiParameters, + parseEther, + toBytes, + toHex +} from "viem" +import { afterAll, beforeAll, describe, expect, test } from "vitest" +import { TokenWithPermitAbi } from "../../test/__contracts/abi/TokenWithPermitAbi" +import { mockAddresses } from "../../test/__contracts/mockAddresses" +import { toNetwork } from "../../test/testSetup" +import { + fundAndDeployClients, + getTestAccount, + killNetwork, + toTestClient +} from "../../test/testUtils" +import type { MasterClient, NetworkConfig } from "../../test/testUtils" +import { NexusAbi } from "../__contracts/abi/NexusAbi" +import { addresses } from "../__contracts/addresses" +import { + type NexusClient, + createNexusClient +} from "../clients/createNexusClient" +import { type NexusAccount, toNexusAccount } from "./toNexusAccount" +import { getAccountDomainStructFields } from "./utils" +import { + NEXUS_DOMAIN_NAME, + NEXUS_DOMAIN_TYPEHASH, + NEXUS_DOMAIN_VERSION, + PARENT_TYPEHASH, + eip1271MagicValue +} from "./utils/Constants" +import type { UserOperationStruct } from "./utils/Types" + +describe("nexus.account", async () => { + let network: NetworkConfig + let chain: Chain + let bundlerUrl: string + + // Test utils + let testClient: MasterClient + let account: Account + let nexusAccountAddress: Address + let nexusClient: NexusClient + let nexusAccount: NexusAccount + let walletClient: WalletClient + + beforeAll(async () => { + network = await toNetwork() + + chain = network.chain + bundlerUrl = network.bundlerUrl + account = getTestAccount(0) + testClient = toTestClient(chain, getTestAccount(5)) + + walletClient = createWalletClient({ + account, + chain, + transport: http() + }) + + nexusClient = await createNexusClient({ + holder: account, + chain, + transport: http(), + bundlerTransport: http(bundlerUrl) + }) + + nexusAccount = nexusClient.account + nexusAccountAddress = await nexusClient.account.getCounterFactualAddress() + await fundAndDeployClients(testClient, [nexusClient]) + }) + afterAll(async () => { + await killNetwork([network?.rpcPort, network?.bundlerPort]) + }) + + test("should check isValidSignature PersonalSign is valid", async () => { + const data = hashMessage("0x1234") + + // Calculate the domain separator + const domainSeparator = keccak256( + encodeAbiParameters( + parseAbiParameters("bytes32, bytes32, bytes32, uint256, address"), + [ + keccak256(toBytes(NEXUS_DOMAIN_TYPEHASH)), + keccak256(toBytes(NEXUS_DOMAIN_NAME)), + keccak256(toBytes(NEXUS_DOMAIN_VERSION)), + BigInt(chain.id), + nexusAccountAddress + ] + ) + ) + + // Calculate the parent struct hash + const parentStructHash = keccak256( + encodeAbiParameters(parseAbiParameters("bytes32, bytes32"), [ + keccak256(toBytes("PersonalSign(bytes prefixed)")), + hashMessage(data) + ]) + ) + + // Calculate the final hash + const resultHash: Hex = keccak256( + concat(["0x1901", domainSeparator, parentStructHash]) + ) + + const signature = await nexusAccount.signMessage({ + message: { raw: toBytes(resultHash) } + }) + + const contractResponse = await testClient.readContract({ + address: nexusAccountAddress, + abi: NexusAbi, + functionName: "isValidSignature", + args: [hashMessage(data), signature] + }) + + const viemResponse = await testClient.verifyMessage({ + address: nexusAccountAddress, + message: data, + signature + }) + + expect(contractResponse).toBe(eip1271MagicValue) + expect(viemResponse).toBe(true) + }) + + test("should have 4337 account actions", async () => { + const [ + isDeployed, + counterfactualAddress, + userOpHash, + address, + factoryArgs, + stubSignature, + signedMessage, + nonce, + initCode, + encodedExecute, + encodedExecuteBatch + ] = await Promise.all([ + nexusAccount.isDeployed(), + nexusAccount.getCounterFactualAddress(), + nexusAccount.getUserOpHash({ + sender: account.address, + nonce: 0n, + data: "0x", + signature: "0x", + verificationGasLimit: 1n, + preVerificationGas: 1n, + callData: "0x", + callGasLimit: 1n, + maxFeePerGas: 1n, + maxPriorityFeePerGas: 1n + } as UserOperationStruct), + nexusAccount.getAddress(), + nexusAccount.getFactoryArgs(), + nexusAccount.getStubSignature(), + nexusAccount.signMessage({ message: "hello" }), + nexusAccount.getNonce(), + nexusAccount.getInitCode(), + nexusAccount.encodeExecute({ to: account.address, value: 100n }), + nexusAccount.encodeExecuteBatch([{ to: account.address, value: 100n }]) + ]) + + expect(isAddress(counterfactualAddress)).toBe(true) + expect(isHex(userOpHash)).toBe(true) + expect(isAddress(address)).toBe(true) + expect(address).toBe(nexusAccountAddress) + + if (isDeployed) { + expect(factoryArgs.factory).toBe(undefined) + expect(factoryArgs.factoryData).toBe(undefined) + } else { + // biome-ignore lint/style/noNonNullAssertion: + expect(isAddress(factoryArgs.factory!)).toBe(true) + // biome-ignore lint/style/noNonNullAssertion: + expect(isHex(factoryArgs.factoryData!)).toBe(true) + } + + expect(isHex(stubSignature)).toBe(true) + expect(isHex(signedMessage)).toBe(true) + expect(typeof nonce).toBe("bigint") + expect(initCode.indexOf(nexusAccount.factoryAddress) > -1).toBe(true) + expect(typeof isDeployed).toBe("boolean") + + expect(isHex(encodedExecute)).toBe(true) + expect(isHex(encodedExecuteBatch)).toBe(true) + }) + + test("should test isValidSignature EIP712Sign to be valid with viem", async () => { + const message = { + contents: keccak256(toBytes("test", { size: 32 })) + } + + const domainSeparator = await testClient.readContract({ + address: await nexusAccount.getAddress(), + abi: parseAbi([ + "function DOMAIN_SEPARATOR() external view returns (bytes32)" + ]), + functionName: "DOMAIN_SEPARATOR" + }) + + const typedHashHashed = keccak256( + concat(["0x1901", domainSeparator, message.contents]) + ) + + const accountDomainStructFields = await getAccountDomainStructFields( + testClient as unknown as PublicClient, + nexusAccountAddress + ) + + const parentStructHash = keccak256( + encodePacked( + ["bytes", "bytes"], + [ + encodeAbiParameters(parseAbiParameters(["bytes32, bytes32"]), [ + keccak256(toBytes(PARENT_TYPEHASH)), + message.contents + ]), + accountDomainStructFields + ] + ) + ) + + const dataToSign = keccak256( + concat(["0x1901", domainSeparator, parentStructHash]) + ) + + const signature = await walletClient.signMessage({ + account, + message: { raw: toBytes(dataToSign) } + }) + + const contentsType = toBytes("Contents(bytes32 stuff)") + + const signatureData = concatHex([ + signature, + domainSeparator, + message.contents, + toHex(contentsType), + toHex(contentsType.length, { size: 2 }) + ]) + + const finalSignature = encodePacked( + ["address", "bytes"], + [addresses.K1Validator, signatureData] + ) + + const contractResponse = await testClient.readContract({ + address: await nexusAccount.getAddress(), + abi: NexusAbi, + functionName: "isValidSignature", + args: [typedHashHashed, finalSignature] + }) + + expect(contractResponse).toBe(eip1271MagicValue) + }) + + test("should sign using signTypedData SDK method", async () => { + const appDomain = { + chainId: chain.id, + name: "TokenWithPermit", + verifyingContract: mockAddresses.TokenWithPermit, + version: "1" + } + + const primaryType = "Contents" + const types = { + Contents: [ + { + name: "stuff", + type: "bytes32" + } + ] + } + + const permitTypehash = keccak256( + toBytes( + "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" + ) + ) + const nonce = (await testClient.readContract({ + address: mockAddresses.TokenWithPermit, + abi: TokenWithPermitAbi, + functionName: "nonces", + args: [nexusAccountAddress] + })) as bigint + + const deadline = BigInt(Math.floor(Date.now() / 1000) + 3600) // 1 hour from now + + const message = { + stuff: keccak256( + encodeAbiParameters( + parseAbiParameters( + "bytes32, address, address, uint256, uint256, uint256" + ), + [ + permitTypehash, + nexusAccountAddress, + nexusAccountAddress, + parseEther("2"), + nonce, + deadline + ] + ) + ) + } + + const appDomainSeparator = domainSeparator({ + domain: appDomain + }) + + const contentsHash = keccak256( + concat(["0x1901", appDomainSeparator, message.stuff]) + ) + + const finalSignature = await nexusClient.signTypedData({ + domain: appDomain, + primaryType, + types, + message + }) + + const nexusResponse = await testClient.readContract({ + address: nexusAccountAddress, + abi: NexusAbi, + functionName: "isValidSignature", + args: [contentsHash, finalSignature] + }) + + const permitTokenResponse = await nexusClient.writeContract({ + address: mockAddresses.TokenWithPermit, + abi: TokenWithPermitAbi, + functionName: "permitWith1271", + chain: network.chain, + args: [ + nexusAccountAddress, + nexusAccountAddress, + parseEther("2"), + deadline, + finalSignature + ] + }) + + await testClient.waitForTransactionReceipt({ hash: permitTokenResponse }) + + const allowance = await testClient.readContract({ + address: mockAddresses.TokenWithPermit, + abi: TokenWithPermitAbi, + functionName: "allowance", + args: [nexusAccountAddress, nexusAccountAddress] + }) + + expect(allowance).toEqual(parseEther("2")) + expect(nexusResponse).toEqual("0x1626ba7e") + }) +}) diff --git a/src/sdk/account/toNexusAccount.ts b/src/sdk/account/toNexusAccount.ts new file mode 100644 index 000000000..fab2f3f7b --- /dev/null +++ b/src/sdk/account/toNexusAccount.ts @@ -0,0 +1,517 @@ +import { + type AbiParameter, + type Account, + type Address, + type Chain, + type ClientConfig, + type Hex, + type Prettify, + type PublicClient, + type RpcSchema, + type SignableMessage, + type Transport, + type TypedData, + type TypedDataDefinition, + type UnionPartialBy, + concat, + concatHex, + createWalletClient, + domainSeparator, + encodeAbiParameters, + encodeFunctionData, + encodePacked, + getContract, + keccak256, + parseAbi, + parseAbiParameters, + publicActions, + toBytes, + toHex, + validateTypedData, + walletActions +} from "viem" +import { + type SmartAccount, + type SmartAccountImplementation, + type UserOperation, + entryPoint07Address, + getUserOperationHash, + toSmartAccount +} from "viem/account-abstraction" +import contracts from "../__contracts" +import { EntrypointAbi, K1ValidatorFactoryAbi } from "../__contracts/abi" +import type { Call, GetNonceArgs, UserOperationStruct } from "./utils/Types" + +import { + EXECUTE_BATCH, + EXECUTE_SINGLE, + MAGIC_BYTES, + MODE_VALIDATION, + PARENT_TYPEHASH +} from "./utils/Constants" + +import type { BaseValidationModule } from "../modules/base/BaseValidationModule" +import { K1ValidatorModule } from "../modules/validators/K1ValidatorModule" +import { + type TypedDataWith712, + eip712WrapHash, + getAccountDomainStructFields, + getTypesForEIP712Domain, + packUserOp, + typeToString +} from "./utils/Utils" +import { type UnknownHolder, toHolder } from "./utils/toHolder" + +/** + * Parameters for creating a Nexus Smart Account + */ +export type ToNexusSmartAccountParameters = { + /** The blockchain network */ + chain: Chain + /** The transport configuration */ + transport: ClientConfig["transport"] + /** The holder account or address */ + holder: UnknownHolder + /** Optional index for the account */ + index?: bigint | undefined + /** Optional active validation module */ + activeModule?: BaseValidationModule + /** Optional factory address */ + factoryAddress?: Address + /** Optional K1 validator address */ + k1ValidatorAddress?: Address +} & Prettify< + Pick< + ClientConfig, + | "account" + | "cacheTime" + | "chain" + | "key" + | "name" + | "pollingInterval" + | "rpcSchema" + > +> + +/** + * Nexus Smart Account type + */ +export type NexusAccount = Prettify< + SmartAccount +> + +/** + * Nexus Smart Account Implementation + */ +export type NexusSmartAccountImplementation = SmartAccountImplementation< + typeof EntrypointAbi, + "0.7", + { + getCounterFactualAddress: () => Promise
+ isDeployed: () => Promise + getInitCode: () => Hex + encodeExecute: (call: Call) => Promise + encodeExecuteBatch: (calls: readonly Call[]) => Promise + getUserOpHash: (userOp: Partial) => Promise + factoryData: Hex + factoryAddress: Address + } +> + +/** + * @description Create a Nexus Smart Account. + * + * @param parameters - {@link ToNexusSmartAccountParameters} + * @returns Nexus Smart Account. {@link NexusAccount} + * + * @example + * import { toNexusAccount } from '@biconomy/sdk' + * import { createWalletClient, http } from 'viem' + * import { mainnet } from 'viem/chains' + * + * const account = await toNexusAccount({ + * chain: mainnet, + * transport: http(), + * holder: '0x...', + * }) + */ +export const toNexusAccount = async ( + parameters: ToNexusSmartAccountParameters +): Promise => { + const { + chain, + transport, + holder: holder_, + index = 0n, + activeModule, + factoryAddress = contracts.k1ValidatorFactory.address, + k1ValidatorAddress = contracts.k1Validator.address, + key = "nexus account", + name = "Nexus Account" + } = parameters + + const holder = await toHolder({ holder: holder_ }) + + const masterClient = createWalletClient({ + account: holder, + chain, + transport, + key, + name + }) + .extend(walletActions) + .extend(publicActions) + + const signerAddress = masterClient.account.address + const entryPointContract = getContract({ + address: contracts.entryPoint.address, + abi: EntrypointAbi, + client: { + public: masterClient, + wallet: masterClient + } + }) + + const factoryData = encodeFunctionData({ + abi: K1ValidatorFactoryAbi, + functionName: "createAccount", + args: [signerAddress, index, [], 0] + }) + + const defaultedActiveModule = + activeModule ?? + new K1ValidatorModule( + { + address: k1ValidatorAddress, + type: "validator", + context: signerAddress, + additionalContext: "0x" + }, + holder + ) + + let _accountAddress: Address + const getAddress = async () => { + if (_accountAddress) return _accountAddress + _accountAddress = (await masterClient.readContract({ + address: factoryAddress, + abi: K1ValidatorFactoryAbi, + functionName: "computeAccountAddress", + args: [signerAddress, index, [], 0] + })) as Address + return _accountAddress + } + + /** + * @description Gets the counterfactual address of the account + * @returns The counterfactual address + * @throws {Error} If unable to get the counterfactual address + */ + const getCounterFactualAddress = async (): Promise
=> { + try { + await entryPointContract.simulate.getSenderAddress([getInitCode()]) + } catch (e: any) { + if (e?.cause?.data?.errorName === "SenderAddressResult") { + _accountAddress = e?.cause.data.args[0] as Address + return _accountAddress + } + console.log("Im in here", e) + } + throw new Error("Failed to get counterfactual account address") + } + + /** + * @description Gets the init code for the account + * @returns The init code as a hexadecimal string + */ + const getInitCode = () => concatHex([factoryAddress, factoryData]) + + /** + * @description Checks if the account is deployed + * @returns True if the account is deployed, false otherwise + */ + const isDeployed = async (): Promise => { + const address = await getCounterFactualAddress() + const contractCode = await masterClient.getCode({ address }) + return (contractCode?.length ?? 0) > 2 + } + + /** + * @description Calculates the hash of a user operation + * @param userOp - The user operation + * @returns The hash of the user operation + */ + const getUserOpHash = async ( + userOp: Partial + ): Promise => { + const packedUserOp = packUserOp(userOp) + const userOpHash = keccak256(packedUserOp as Hex) + const enc = encodeAbiParameters( + parseAbiParameters("bytes32, address, uint256"), + [userOpHash, contracts.entryPoint.address, BigInt(chain.id)] + ) + return keccak256(enc) + } + + /** + * @description Encodes a batch of calls for execution + * @param calls - An array of calls to encode + * @param mode - The execution mode + * @returns The encoded calls + */ + const encodeExecuteBatch = async ( + calls: readonly Call[], + mode = EXECUTE_BATCH + ): Promise => { + const executionAbiParams: AbiParameter = { + type: "tuple[]", + components: [ + { name: "target", type: "address" }, + { name: "value", type: "uint256" }, + { name: "callData", type: "bytes" } + ] + } + + const executions = calls.map((tx) => ({ + target: tx.to, + callData: tx.data ?? "0x", + value: BigInt(tx.value ?? 0n) + })) + + const executionCalldataPrep = encodeAbiParameters( + [executionAbiParams], + [executions] + ) + return encodeFunctionData({ + abi: parseAbi([ + "function execute(bytes32 mode, bytes calldata executionCalldata) external" + ]), + functionName: "execute", + args: [mode, executionCalldataPrep] + }) + } + + /** + * @description Encodes a single call for execution + * @param call - The call to encode + * @param mode - The execution mode + * @returns The encoded call + */ + const encodeExecute = async ( + call: Call, + mode = EXECUTE_SINGLE + ): Promise => { + const executionCalldata = encodePacked( + ["address", "uint256", "bytes"], + [call.to as Hex, BigInt(call.value ?? 0n), (call.data ?? "0x") as Hex] + ) + + return encodeFunctionData({ + abi: parseAbi([ + "function execute(bytes32 mode, bytes calldata executionCalldata) external" + ]), + functionName: "execute", + args: [mode, executionCalldata] + }) + } + + /** + * @description Gets the nonce for the account + * @param args - Optional arguments for getting the nonce + * @returns The nonce + */ + const getNonce = async ({ + validationMode: _validationMode = MODE_VALIDATION, + nonceOptions + }: GetNonceArgs = {}): Promise => { + if (nonceOptions) { + if (nonceOptions?.nonceOverride) return BigInt(nonceOptions.nonceOverride) + if (nonceOptions?.validationMode) + _validationMode = nonceOptions.validationMode + } + try { + const key: string = concat([ + "0x000000", + _validationMode, + defaultedActiveModule.address + ]) + const accountAddress = await getAddress() + return await entryPointContract.read.getNonce([ + accountAddress, + BigInt(key) + ]) + } catch (e) { + return BigInt(0) + } + } + + /** + * @description Signs a message + * @param params - The parameters for signing + * @param params.message - The message to sign + * @returns The signature + */ + const signMessage = async ({ + message + }: { message: SignableMessage }): Promise => { + const tempSignature = await defaultedActiveModule + .getHolder() + .signMessage({ message }) + + const signature = encodePacked( + ["address", "bytes"], + [defaultedActiveModule.getAddress(), tempSignature] + ) + + const erc6492Signature = concat([ + encodeAbiParameters( + [ + { + type: "address", + name: "create2Factory" + }, + { + type: "bytes", + name: "factoryCalldata" + }, + { + type: "bytes", + name: "originalERC1271Signature" + } + ], + [factoryAddress, factoryData, signature] + ), + MAGIC_BYTES + ]) + + const accountIsDeployed = await isDeployed() + return accountIsDeployed ? signature : erc6492Signature + } + + /** + * @description Signs typed data + * @param parameters - The typed data parameters + * @returns The signature + */ + async function signTypedData< + const typedData extends TypedData | Record, + primaryType extends keyof typedData | "EIP712Domain" = keyof typedData + >(parameters: TypedDataDefinition): Promise { + const { message, primaryType, types: _types, domain } = parameters + + if (!domain) throw new Error("Missing domain") + if (!message) throw new Error("Missing message") + + const types = { + EIP712Domain: getTypesForEIP712Domain({ domain }), + ..._types + } + + // @ts-ignore: Comes from nexus parent typehash + const messageStuff: Hex = message.stuff + + // @ts-ignore + validateTypedData({ + domain, + message, + primaryType, + types + }) + + const appDomainSeparator = domainSeparator({ domain }) + const accountDomainStructFields = await getAccountDomainStructFields( + masterClient as unknown as PublicClient, + await getAddress() + ) + + const parentStructHash = keccak256( + encodePacked( + ["bytes", "bytes"], + [ + encodeAbiParameters(parseAbiParameters(["bytes32, bytes32"]), [ + keccak256(toBytes(PARENT_TYPEHASH)), + messageStuff + ]), + accountDomainStructFields + ] + ) + ) + + const wrappedTypedHash = eip712WrapHash( + parentStructHash, + appDomainSeparator + ) + + let signature = await defaultedActiveModule.signMessage( + toBytes(wrappedTypedHash) + ) + + const contentsType = toBytes(typeToString(types as TypedDataWith712)[1]) + + const signatureData = concatHex([ + signature, + appDomainSeparator, + messageStuff, + toHex(contentsType), + toHex(contentsType.length, { size: 2 }) + ]) + + signature = encodePacked( + ["address", "bytes"], + [defaultedActiveModule.getAddress(), signatureData] + ) + + return signature + } + + return toSmartAccount({ + client: masterClient, + entryPoint: { + abi: EntrypointAbi, + address: contracts.entryPoint.address, + version: "0.7" + }, + getAddress, + encodeCalls: (calls: readonly Call[]): Promise => { + return calls.length === 1 + ? encodeExecute(calls[0]) + : encodeExecuteBatch(calls) + }, + getFactoryArgs: async () => { + return { factory: factoryAddress, factoryData } + }, + getStubSignature: async (): Promise => { + return defaultedActiveModule.getDummySignature() + }, + signMessage, + signTypedData, + signUserOperation: async ( + parameters: UnionPartialBy & { + chainId?: number | undefined + } + ): Promise => { + const { chainId = masterClient.chain.id, ...userOpWithoutSender } = + parameters + const address = await getCounterFactualAddress() + const userOperation = { ...userOpWithoutSender, sender: address } + const hash = getUserOperationHash({ + chainId, + entryPointAddress: entryPoint07Address, + entryPointVersion: "0.7", + userOperation + }) + return await defaultedActiveModule.signUserOpHash(hash) + }, + getNonce, + extend: { + getCounterFactualAddress, + isDeployed, + getInitCode, + encodeExecute, + encodeExecuteBatch, + getUserOpHash, + factoryData, + factoryAddress + } + }) +} diff --git a/src/sdk/account/utils/AccountNotFound.ts b/src/sdk/account/utils/AccountNotFound.ts new file mode 100644 index 000000000..e373fcac3 --- /dev/null +++ b/src/sdk/account/utils/AccountNotFound.ts @@ -0,0 +1,20 @@ +import { BaseError } from "viem" + +/** + * @ignore + */ +export class AccountNotFoundError extends BaseError { + constructor({ docsPath }: { docsPath?: string | undefined } = {}) { + super( + [ + "Could not find an Account to execute with this Action.", + "Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client." + ].join("\n"), + { + docsPath, + docsSlug: "account", + name: "AccountNotFoundError" + } + ) + } +} diff --git a/src/sdk/account/utils/Constants.ts b/src/sdk/account/utils/Constants.ts new file mode 100644 index 000000000..19b692682 --- /dev/null +++ b/src/sdk/account/utils/Constants.ts @@ -0,0 +1,144 @@ +import { type Hex, concat, keccak256, pad, toHex } from "viem" +export const ADDRESS_ZERO = "0x0000000000000000000000000000000000000000" +export const MAGIC_BYTES = + "0x6492649264926492649264926492649264926492649264926492649264926492" +export const BICONOMY_TOKEN_PAYMASTER = + "0x00000f7365cA6C59A2C93719ad53d567ed49c14C" +export const DEFAULT_BICONOMY_IMPLEMENTATION_ADDRESS = + "0x8EBDcA5ce92f9aBF1D1ab21de24068B2a2EaF808" +export const EIP1559_UNSUPPORTED_NETWORKS: Array = [97, 56, 1442, 1101] + +export const PROXY_CREATION_CODE = + "0x603d3d8160223d3973600966Ae45ad5BE4be08a70AD99e9cF41e6d6884B06F5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + +export const ADDRESS_RESOLVER_ADDRESS = + "0x00000E81673606e07fC79CE5F1b3B26957844468" + +export const DefaultGasLimit = { + callGasLimit: 800000, + verificationGasLimit: 1000000, + preVerificationGas: 100000 +} + +export const ERROR_MESSAGES = { + INVALID_HEX: + "Invalid hex, if you are targeting a number, consider using pad() and toHex() from viem: pad(toHex(BigInt(2000))", + ACCOUNT_NOT_DEPLOYED: "Account has not yet been deployed", + ACCOUNT_ALREADY_DEPLOYED: "Account already deployed", + NO_NATIVE_TOKEN_BALANCE_DURING_DEPLOY: + "Smart Account does not have sufficient funds to execute the User Operation.", + SPENDER_REQUIRED: "spender is required for ERC20 mode", + NO_FEE_QUOTE: + "FeeQuote was not provided, please call smartAccount.getTokenFees() to get feeQuote", + FAILED_FEE_QUOTE_FETCH: "Failed to fetch fee quote", + CHAIN_NOT_FOUND: "Chain not found", + NO_RECIPIENT: "Recipient is required", + NATIVE_TOKEN_WITHDRAWAL_WITHOUT_AMOUNT: + "'Amount' is required for withdrawal of native token without using a paymaster", + MISSING_RPC_URL: + "rpcUrl is required for this signer type, please provide it in the config", + INVALID_SESSION_INDEXES: + "Session indexes and transactions must be of the same length and correspond to each other", + SIGNER_REQUIRED: "Signer is required for creating a smart account", + UNKNOW_SESSION_ARGUMENTS: + "You have not provided the necessary information to find and use a session" +} + +export const NATIVE_TOKEN_ALIAS: Hex = + "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" +export const ERC20_ABI = [ + "function transfer(address to, uint256 value) external returns (bool)", + "function transferFrom(address from, address to, uint256 value) external returns (bool)", + "function approve(address spender, uint256 value) external returns (bool)", + "function allowance(address owner, address spender) external view returns (uint256)", + "function balanceOf(address owner) external view returns (uint256)", + "function decimals() external view returns (uint8)" +] + +// define mode and exec type enums +export const CALLTYPE_SINGLE = "0x00" // 1 byte +export const CALLTYPE_BATCH = "0x01" // 1 byte +export const EXECTYPE_DEFAULT = "0x00" // 1 byte +export const EXECTYPE_TRY = "0x01" // 1 byte +export const EXECTYPE_DELEGATE = "0xFF" // 1 byte +export const MODE_DEFAULT = "0x00000000" // 4 bytes +export const UNUSED = "0x00000000" // 4 bytes +export const MODE_PAYLOAD = "0x00000000000000000000000000000000000000000000" // 22 bytes + +export const GENERIC_FALLBACK_SELECTOR = "0xcb5baf0f" + +export const SENTINEL_ADDRESS: Hex = + "0x0000000000000000000000000000000000000001" + +export const MODE_VALIDATION = "0x00" +export const MODE_MODULE_ENABLE = "0x01" + +export const MODULE_ENABLE_MODE_TYPE_HASH = keccak256( + toHex("ModuleEnableMode(address module, bytes32 initDataHash)") +) +export const MOCK_MULTI_MODULE_ADDRESS = + "0x9C992f91E7Cd4697B81E137007f446E826b8378b" +export const MODULE_TYPE_MULTI = 0 + +export const NEXUS_DOMAIN_NAME = "Nexus" +export const NEXUS_DOMAIN_VERSION = "1.0.0-beta" +export const NEXUS_DOMAIN_TYPEHASH = + "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + +export const PARENT_TYPEHASH = + "TypedDataSign(Contents contents,bytes1 fields,string name,string version,uint256 chainId,address verifyingContract,bytes32 salt,uint256[] extensions)Contents(bytes32 stuff)" +export const eip1271MagicValue: Hex = "0x1626ba7e" + +export const EXECUTE_SINGLE = concat([ + CALLTYPE_SINGLE, + EXECTYPE_DEFAULT, + MODE_DEFAULT, + UNUSED, + MODE_PAYLOAD +]) + +export const EXECUTE_BATCH = concat([ + CALLTYPE_BATCH, + EXECTYPE_DEFAULT, + MODE_DEFAULT, + UNUSED, + MODE_PAYLOAD +]) + +export const ACCOUNT_MODES = { + DEFAULT_SINGLE: concat([ + pad(EXECTYPE_DEFAULT, { size: 1 }), + pad(CALLTYPE_SINGLE, { size: 1 }), + pad(UNUSED, { size: 4 }), + pad(MODE_DEFAULT, { size: 4 }), + pad(MODE_PAYLOAD, { size: 22 }) + ]), + DEFAULT_BATCH: concat([ + pad(EXECTYPE_DEFAULT, { size: 1 }), + pad(CALLTYPE_BATCH, { size: 1 }), + pad(UNUSED, { size: 4 }), + pad(MODE_DEFAULT, { size: 4 }), + pad(MODE_PAYLOAD, { size: 22 }) + ]), + TRY_BATCH: concat([ + pad(EXECTYPE_TRY, { size: 1 }), + pad(CALLTYPE_BATCH, { size: 1 }), + pad(UNUSED, { size: 4 }), + pad(MODE_DEFAULT, { size: 4 }), + pad(MODE_PAYLOAD, { size: 22 }) + ]), + TRY_SINGLE: concat([ + pad(EXECTYPE_TRY, { size: 1 }), + pad(CALLTYPE_SINGLE, { size: 1 }), + pad(UNUSED, { size: 4 }), + pad(MODE_DEFAULT, { size: 4 }), + pad(MODE_PAYLOAD, { size: 22 }) + ]), + DELEGATE_SINGLE: concat([ + pad(EXECTYPE_DELEGATE, { size: 1 }), + pad(CALLTYPE_SINGLE, { size: 1 }), + pad(UNUSED, { size: 4 }), + pad(MODE_DEFAULT, { size: 4 }), + pad(MODE_PAYLOAD, { size: 22 }) + ]) +} diff --git a/src/sdk/account/utils/Helpers.ts b/src/sdk/account/utils/Helpers.ts new file mode 100644 index 000000000..85d5c3051 --- /dev/null +++ b/src/sdk/account/utils/Helpers.ts @@ -0,0 +1,4 @@ +export const isDebugging = () => + process.env.BICONOMY_SDK_DEBUG === "true" || + process.env.REACT_APP_BICONOMY_SDK_DEBUG === "true" || + process.env.NEXT_PUBLIC_BICONOMY_SDK_DEBUG === "true" diff --git a/src/sdk/account/utils/Logger.ts b/src/sdk/account/utils/Logger.ts new file mode 100644 index 000000000..532656566 --- /dev/null +++ b/src/sdk/account/utils/Logger.ts @@ -0,0 +1,52 @@ +/* eslint-disable no-console */ +/** + * Single class to be used for logging purpose. + * + * @param {any} message Message to be logged + */ + +import { isDebugging } from "./Helpers" + +// biome-ignore lint/complexity/noStaticOnlyClass: +class Logger { + // By default, the logger is not in debug mode. + static isDebug: boolean = isDebugging() + + /** + * \x1b[0m is an escape sequence to reset the color of the text + * All color codes used - 31 - Red, 33 - Yellow, 34 - Blue, 35 - Magenta, 36 - Cyan + * log - Magenta[time] Cyan[message]: [value] + * warn - Magenta[time] Yellow[WARN]: Cyan[message]: [value] + * error - Magenta[time] Red[ERROR]: Cyan[message]: [value] + */ + + // biome-ignore lint/suspicious/noExplicitAny: + static log(message: string, value: any = ""): void { + const timestamp = new Date().toISOString() + const logMessage = `\x1b[35m[${timestamp}]\x1b[0m \x1b[36m${message}\x1b[0m:` + + if (Logger.isDebug) { + console.log(logMessage, value === undefined ? "" : value) + } + } + // biome-ignore lint/suspicious/noExplicitAny: + static warn(message: string, value: any = ""): void { + const timestamp = new Date().toISOString() + const warnMessage = `\x1b[35m[${timestamp}]\x1b[0m \x1b[33mWARN\x1b[0m: \x1b[36m${message}\x1b[0m` + + if (Logger.isDebug) { + console.warn(warnMessage, value === undefined ? "" : value) + } + } + // biome-ignore lint/suspicious/noExplicitAny: + static error(message: string, value: any = ""): void { + const timestamp = new Date().toISOString() + const errorMessage = `\x1b[35m[${timestamp}]\x1b[0m \x1b[31mERROR\x1b[0m: \x1b[36m${message}\x1b[0m` + + if (Logger.isDebug) { + console.error(errorMessage, value === undefined ? "" : value) + } + } +} + +export { Logger } diff --git a/src/sdk/account/utils/Types.ts b/src/sdk/account/utils/Types.ts new file mode 100644 index 000000000..f1cd3a424 --- /dev/null +++ b/src/sdk/account/utils/Types.ts @@ -0,0 +1,106 @@ +import type { Address, Hash, Hex, Log } from "viem" +import type { MODE_MODULE_ENABLE, MODE_VALIDATION } from "./Constants" + +export type TStatus = "success" | "reverted" + +export type UserOpReceiptTransaction = { + transactionHash: Hex + transactionIndex: bigint + blockHash: Hash + blockNumber: bigint + from: Address + to: Address | null + cumulativeGasUsed: bigint + status: TStatus + gasUsed: bigint + contractAddress: Address | null + logsBloom: Hex + effectiveGasPrice: bigint +} + +export type UserOpReceipt = { + userOpHash: Hash + entryPoint: Address + sender: Address + nonce: bigint + paymaster?: Address + actualGasUsed: bigint + actualGasCost: bigint + success: boolean + reason?: string + receipt: UserOpReceiptTransaction + logs: Log[] +} + +export type NonceOptions = { + /** nonceKey: The key to use for nonce */ + nonceKey?: bigint + /** validationMode: Mode of the validation module */ + validationMode?: typeof MODE_VALIDATION | typeof MODE_MODULE_ENABLE + /** nonceOverride: The nonce to use for the transaction */ + nonceOverride?: bigint +} + +export type Service = "Bundler" | "Paymaster" +export type BigNumberish = Hex | number | bigint +export type BytesLike = Uint8Array | Hex | string + +//#region UserOperationStruct +// based on @account-abstraction/common +// this is used for building requests +export type UserOperationStruct = { + sender: Address + nonce: bigint + factory?: Address + factoryData?: Hex + callData: Hex + callGasLimit: bigint + verificationGasLimit: bigint + preVerificationGas: bigint + maxFeePerGas: bigint + maxPriorityFeePerGas: bigint + paymaster?: Address + paymasterVerificationGasLimit?: bigint + paymasterPostOpGasLimit?: bigint + paymasterData?: Hex + signature: Hex + // initCode?: never + paymasterAndData?: never +} +//#endregion UserOperationStruct + +export type EIP712DomainReturn = [ + Hex, + string, + string, + bigint, + Address, + Hex, + bigint[] +] + +export type AccountMetadata = { + name: string + version: string + chainId: bigint +} + +export type TypeField = { + name: string + type: string +} + +export type TypeDefinition = { + [key: string]: TypeField[] +} + +export type GetNonceArgs = { + key?: bigint | undefined + validationMode?: "0x00" | "0x01" + nonceOptions?: NonceOptions +} +export type Call = { + to: Hex + data?: Hex | undefined + value?: bigint | undefined +} diff --git a/src/sdk/account/utils/Utils.ts b/src/sdk/account/utils/Utils.ts new file mode 100644 index 000000000..a0c024c7b --- /dev/null +++ b/src/sdk/account/utils/Utils.ts @@ -0,0 +1,338 @@ +import { + type Address, + type Client, + type Hash, + type Hex, + type PublicClient, + type TypedData, + type TypedDataDomain, + type TypedDataParameter, + concat, + decodeFunctionResult, + encodeAbiParameters, + encodeFunctionData, + encodePacked, + hexToBytes, + keccak256, + pad, + parseAbi, + parseAbiParameters, + publicActions, + stringToBytes, + toBytes, + toHex +} from "viem" +import { EIP1271Abi } from "../../__contracts/abi" +import { + MOCK_MULTI_MODULE_ADDRESS, + MODULE_ENABLE_MODE_TYPE_HASH, + NEXUS_DOMAIN_NAME, + NEXUS_DOMAIN_TYPEHASH, + NEXUS_DOMAIN_VERSION +} from "../../account/utils/Constants" +import { type ModuleType, moduleTypeIds } from "../../modules/utils/Types" +import type { + AccountMetadata, + EIP712DomainReturn, + UserOperationStruct +} from "./Types" + +/** + * pack the userOperation + * @param op + * @param forSignature "true" if the hash is needed to calculate the getUserOpHash() + * "false" to pack entire UserOp, for calculating the calldata cost of putting it on-chain. + */ +export function packUserOp( + userOperation: Partial +): string { + const hashedInitCode = keccak256( + userOperation.factory && userOperation.factoryData + ? concat([userOperation.factory, userOperation.factoryData]) + : "0x" + ) + const hashedCallData = keccak256(userOperation.callData ?? "0x") + const hashedPaymasterAndData = keccak256( + userOperation.paymaster + ? concat([ + userOperation.paymaster, + pad(toHex(userOperation.paymasterVerificationGasLimit || BigInt(0)), { + size: 16 + }), + pad(toHex(userOperation.paymasterPostOpGasLimit || BigInt(0)), { + size: 16 + }), + userOperation.paymasterData || "0x" + ]) + : "0x" + ) + + return encodeAbiParameters( + [ + { type: "address" }, + { type: "uint256" }, + { type: "bytes32" }, + { type: "bytes32" }, + { type: "bytes32" }, + { type: "uint256" }, + { type: "bytes32" }, + { type: "bytes32" } + ], + [ + userOperation.sender as Address, + userOperation.nonce ?? 0n, + hashedInitCode, + hashedCallData, + concat([ + pad(toHex(userOperation.verificationGasLimit ?? 0n), { + size: 16 + }), + pad(toHex(userOperation.callGasLimit ?? 0n), { size: 16 }) + ]), + userOperation.preVerificationGas ?? 0n, + concat([ + pad(toHex(userOperation.maxPriorityFeePerGas ?? 0n), { + size: 16 + }), + pad(toHex(userOperation.maxFeePerGas ?? 0n), { size: 16 }) + ]), + hashedPaymasterAndData + ] + ) +} + +// biome-ignore lint/suspicious/noExplicitAny: +export const isNullOrUndefined = (value: any): value is undefined => { + return value === null || value === undefined +} + +export const isValidRpcUrl = (url: string): boolean => { + const regex = /^(http:\/\/|wss:\/\/|https:\/\/).*/ + return regex.test(url) +} + +export const addressEquals = (a?: string, b?: string): boolean => + !!a && !!b && a?.toLowerCase() === b.toLowerCase() + +export type SignWith6492Params = { + factoryAddress: Address + factoryCalldata: Hex + signature: Hash +} + +export const wrapSignatureWith6492 = ({ + factoryAddress, + factoryCalldata, + signature +}: SignWith6492Params): Hash => { + // wrap the signature as follows: https://eips.ethereum.org/EIPS/eip-6492 + // concat( + // abi.encode( + // (create2Factory, factoryCalldata, originalERC1271Signature), + // (address, bytes, bytes)), + // magicBytes + // ) + return concat([ + encodeAbiParameters(parseAbiParameters("address, bytes, bytes"), [ + factoryAddress, + factoryCalldata, + signature + ]), + "0x6492649264926492649264926492649264926492649264926492649264926492" + ]) +} + +export function percentage(partialValue: number, totalValue: number) { + return (100 * partialValue) / totalValue +} + +export function convertToFactor(percentage: number | undefined): number { + // Check if the input is within the valid range + if (percentage) { + if (percentage < 1 || percentage > 100) { + throw new Error("The percentage value should be between 1 and 100.") + } + + // Calculate the factor + const factor = percentage / 100 + 1 + + return factor + } + return 1 +} + +export function makeInstallDataAndHash( + accountOwner: Address, + modules: { type: ModuleType; config: Hex }[] +): [string, string] { + const types = modules.map((module) => BigInt(moduleTypeIds[module.type])) + const initDatas = modules.map((module) => + toHex(concat([toBytes(BigInt(moduleTypeIds[module.type])), module.config])) + ) + + const multiInstallData = encodeAbiParameters( + [{ type: "uint256[]" }, { type: "bytes[]" }], + [types, initDatas] + ) + + const structHash = keccak256( + encodeAbiParameters( + [{ type: "bytes32" }, { type: "address" }, { type: "bytes32" }], + [ + MODULE_ENABLE_MODE_TYPE_HASH, + MOCK_MULTI_MODULE_ADDRESS, + keccak256(multiInstallData) + ] + ) + ) + + const hashToSign = _hashTypedData( + structHash, + "Nexus", + "1.0.0-beta", + accountOwner + ) + + return [multiInstallData, hashToSign] +} + +export function _hashTypedData( + structHash: Hex, + name: string, + version: string, + verifyingContract: Address +): string { + const DOMAIN_SEPARATOR = keccak256( + encodeAbiParameters( + [ + { type: "bytes32" }, + { type: "bytes32" }, + { type: "bytes32" }, + { type: "address" } + ], + [ + keccak256(stringToBytes(NEXUS_DOMAIN_TYPEHASH)), + keccak256(stringToBytes(name)), + keccak256(stringToBytes(version)), + verifyingContract + ] + ) + ) + + return keccak256( + concat([ + stringToBytes("\x19\x01"), + hexToBytes(DOMAIN_SEPARATOR), + hexToBytes(structHash) + ]) + ) +} + +export function getTypesForEIP712Domain({ + domain +}: { domain?: TypedDataDomain | undefined }): TypedDataParameter[] { + return [ + typeof domain?.name === "string" && { name: "name", type: "string" }, + domain?.version && { name: "version", type: "string" }, + typeof domain?.chainId === "number" && { + name: "chainId", + type: "uint256" + }, + domain?.verifyingContract && { + name: "verifyingContract", + type: "address" + }, + domain?.salt && { name: "salt", type: "bytes32" } + ].filter(Boolean) as TypedDataParameter[] +} +export const accountMetadata = async ( + client: Client, + accountAddress: Address +): Promise => { + try { + const domain = await client.request({ + method: "eth_call", + params: [ + { + to: accountAddress, + data: encodeFunctionData({ + abi: EIP1271Abi, + functionName: "eip712Domain" + }) + }, + "latest" + ] + }) + + if (domain !== "0x") { + const decoded = decodeFunctionResult({ + abi: [...EIP1271Abi], + functionName: "eip712Domain", + data: domain + }) + return { + name: decoded?.[1], + version: decoded?.[2], + chainId: decoded?.[3] + } + } + } catch (error) {} + return { + name: NEXUS_DOMAIN_NAME, + version: NEXUS_DOMAIN_VERSION, + chainId: client.chain + ? BigInt(client.chain.id) + : BigInt(await client.extend(publicActions).getChainId()) + } +} + +export const eip712WrapHash = (typedHash: Hex, appDomainSeparator: Hex): Hex => + keccak256(concat(["0x1901", appDomainSeparator, typedHash])) + +export type TypedDataWith712 = { + EIP712Domain: TypedDataParameter[] +} & TypedData + +export function typeToString(typeDef: TypedDataWith712): string[] { + return Object.entries(typeDef).map(([key, fields]) => { + const fieldStrings = (fields ?? []) + .map((field) => `${field.type} ${field.name}`) + .join(",") + return `${key}(${fieldStrings})` + }) +} + +/** @ignore */ +export function bigIntReplacer(_key: string, value: any): any { + return typeof value === "bigint" ? value.toString() : value +} + +export const getAccountDomainStructFields = async ( + publicClient: PublicClient, + accountAddress: Address +) => { + const accountDomainStructFields = (await publicClient.readContract({ + address: accountAddress, + abi: parseAbi([ + "function eip712Domain() public view returns (bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions)" + ]), + functionName: "eip712Domain" + })) as EIP712DomainReturn + + const [fields, name, version, chainId, verifyingContract, salt, extensions] = + accountDomainStructFields + + const params = parseAbiParameters([ + "bytes1, bytes32, bytes32, uint256, address, bytes32, bytes32" + ]) + + return encodeAbiParameters(params, [ + fields, + keccak256(toBytes(name)), + keccak256(toBytes(version)), + chainId, + verifyingContract, + salt, + keccak256(encodePacked(["uint256[]"], [extensions])) + ]) +} diff --git a/src/sdk/account/utils/getAAError.ts b/src/sdk/account/utils/getAAError.ts new file mode 100644 index 000000000..8be4806c0 --- /dev/null +++ b/src/sdk/account/utils/getAAError.ts @@ -0,0 +1,85 @@ +import { BaseError } from "viem" +import type { Service } from ".." +export type KnownError = { + name: string + regex: string + description: string + causes: string[] + solutions: string[] + docsUrl?: string +} + +export const ERRORS_URL = + "https://raw.githubusercontent.com/bcnmy/aa-errors/main/docs/errors.json" +export const DOCS_URL = "https://docs.biconomy.io/troubleshooting/commonerrors" +const UNKOWN_ERROR_CODE = "520" + +const knownErrors: KnownError[] = [] + +const matchError = (message: string): null | KnownError => + knownErrors.find( + (knownError: KnownError) => + message.toLowerCase().indexOf(knownError.regex.toLowerCase()) > -1 + ) ?? null + +const buildErrorStrings = ( + error: KnownError, + status: string, + service?: Service +): string[] => + [ + `${status}: ${error.description}\n`, + error.causes?.length + ? ["Potential cause(s): \n", ...error.causes, ""].join("\n") + : "", + error.solutions?.length + ? ["Potential solution(s): \n", ...error.solutions].join("\n") + : "", + service ? `\nSent via: ${service}` : "" + ].filter(Boolean) + +type AccountAbstractionErrorParams = { + docsSlug?: string + metaMessages?: string[] + details?: string +} + +class AccountAbstractionError extends BaseError { + override name = "AccountAbstractionError" + override version = "@biconomy/sdk" + + constructor(title: string, params: AccountAbstractionErrorParams = {}) { + super(title, params) + } +} + +export const getAAError = async ( + message: string, + httpStatus?: number, + service?: Service +) => { + if (!knownErrors.length) { + const errors = (await (await fetch(ERRORS_URL)).json()) as KnownError[] + knownErrors.push(...errors) + } + + const details: string = + `${service} - ${typeof message}` === "string" + ? message + : JSON.stringify(message) + const matchedError = matchError(details) + const status = + matchedError?.regex ?? (httpStatus ?? UNKOWN_ERROR_CODE).toString() + + const metaMessages = matchedError + ? buildErrorStrings(matchedError, status, service) + : [] + const title = matchedError ? matchedError.name : "Unknown Error" + const docsSlug = matchedError?.docsUrl ?? DOCS_URL + + return new AccountAbstractionError(title, { + docsSlug, + metaMessages, + details + }) +} diff --git a/src/sdk/account/utils/getChain.ts b/src/sdk/account/utils/getChain.ts new file mode 100644 index 000000000..ad1242c3f --- /dev/null +++ b/src/sdk/account/utils/getChain.ts @@ -0,0 +1,126 @@ +import * as chains from "viem/chains" +import type { Chain } from "viem/chains" + +const CUSTOM_CHAINS: Chain[] = [ + { + id: 81_457, + name: "Blast", + nativeCurrency: { + decimals: 18, + name: "Ethereum", + symbol: "ETH" + }, + rpcUrls: { + public: { http: ["https://rpc.blast.io"] }, + default: { http: ["https://rpc.blast.io"] } + }, + blockExplorers: { + etherscan: { name: "Blastscan", url: "https://blastscan.io/" }, + default: { name: "Blastscan", url: "https://blastscan.io/" } + }, + contracts: { + multicall3: { + address: "0xca11bde05977b3631167028862be2a173976ca11", + blockCreated: 88_189 + } + } + } +] + +/** + * Utility method for converting a chainId to a {@link Chain} object + * + * @param chainId + * @returns a {@link Chain} object for the given chainId + * @throws if the chainId is not found + */ +export const getChain = (chainId: number): Chain => { + const allChains = [...Object.values(chains), ...CUSTOM_CHAINS] + for (const chain of allChains) { + if (chain.id === chainId) { + return chain + } + } + throw new Error( + "Chain not found. Please add a customChain into your config using the getCustomChain(...) helper, and the BiconomySmartAccountV2Config['customChain'] config option" + ) +} + +export const stringOrStringsToArray = (str: string | string[]): string[] => + Array.isArray(str) ? str : [str] + +type StringOrStrings = string | string[] +/** + * + * getCustomChain + * + * Utility method for creating a custom chain object + * + * @param name The name of the chain + * @param id The chainId (number) + * @param rpcUrl The RPC URL for the chain - may also be an array of URLs + * @param blockExplorer The block explorer URL for the chain - may also be an array of URLs + * @param nativeCurrency The native currency for the chain, ETH by default + * + * @example + * + * import { getCustomChain, createNexusClient } from "@biconomy/sdk" + * + * const customChain = getCustomChain( + * "My Custom Chain", + * 123456, // id + * "https://rpc.my-custom-chain.io", // Can also pass an array of URLs + * "https://explorer.my-custom-chain.io" // Can also pass an array of URLs + * ) + * + * const account = privateKeyToAccount(`0x${privateKey}`) + * const walletClientWithCustomChain = createWalletClient({ + * account, + * chain: customChain, + * transport: http() + * }) + * + * const smartAccountCustomChain = await createNexusClient({ + * signer: walletClientWithCustomChain, + * bundlerUrl, + * customChain + * }) + * + * const { wait } = await smartAccountCustomChain.sendTransaction({ + * to: recipient, + * value: BigInt(1) + * }) + * + * const { success, receipt } = await wait(); + * console.log(success); + * + */ +export const getCustomChain = ( + name: string, + id: number, + rpcUrl: StringOrStrings, + blockExplorer?: StringOrStrings, + nativeCurrency?: Chain["nativeCurrency"], + contracts?: Chain["contracts"] +): Chain => { + const chain: Chain = { + id, + name, + nativeCurrency: nativeCurrency ?? { + decimals: 18, + name: "Ethereum", + symbol: "ETH" + }, + rpcUrls: { + default: { http: stringOrStringsToArray(rpcUrl) } + }, + blockExplorers: { + default: { + name: "Explorer", + url: blockExplorer ? stringOrStringsToArray(blockExplorer)[0] : "" + } + }, + ...((contracts && { contracts }) || {}) + } + return chain +} diff --git a/src/sdk/account/utils/index.ts b/src/sdk/account/utils/index.ts new file mode 100644 index 000000000..36c7543f6 --- /dev/null +++ b/src/sdk/account/utils/index.ts @@ -0,0 +1,6 @@ +export * from "./Types.js" +export * from "./Utils.js" +export * from "./Constants.js" +export * from "./getChain.js" +export * from "./Logger.js" +export * from "./toHolder.js" diff --git a/src/sdk/account/utils/toHolder.ts b/src/sdk/account/utils/toHolder.ts new file mode 100644 index 000000000..94d2948fa --- /dev/null +++ b/src/sdk/account/utils/toHolder.ts @@ -0,0 +1,85 @@ +import { + type Account, + type Address, + type Chain, + type EIP1193Provider, + type EIP1193RequestFn, + type EIP1474Methods, + type LocalAccount, + type OneOf, + type Transport, + type WalletClient, + createWalletClient, + custom +} from "viem" +import { toAccount } from "viem/accounts" + +import { signTypedData } from "viem/actions" +import { getAction } from "viem/utils" + +export type Holder = LocalAccount +export type UnknownHolder = OneOf< + | EIP1193Provider + | WalletClient + | LocalAccount +> +export async function toHolder({ + holder, + address +}: { + holder: UnknownHolder + address?: Address +}): Promise { + if ("type" in holder && holder.type === "local") { + return holder as LocalAccount + } + + let walletClient: + | WalletClient + | undefined = undefined + + if ("request" in holder) { + if (!address) { + try { + ;[address] = await (holder.request as EIP1193RequestFn)( + { + method: "eth_requestAccounts" + } + ) + } catch { + ;[address] = await (holder.request as EIP1193RequestFn)( + { + method: "eth_accounts" + } + ) + } + } + if (!address) throw new Error("address required") + + walletClient = createWalletClient({ + account: address, + transport: custom(holder as EIP1193Provider) + }) + } + + if (!walletClient) { + walletClient = holder as WalletClient + } + + return toAccount({ + address: walletClient.account.address, + async signMessage({ message }) { + return walletClient.signMessage({ message }) + }, + async signTypedData(typedData) { + return getAction( + walletClient, + signTypedData, + "signTypedData" + )(typedData as any) + }, + async signTransaction(_) { + throw new Error("Not supported") + } + }) +} diff --git a/src/sdk/account/utils/utils.test.ts b/src/sdk/account/utils/utils.test.ts new file mode 100644 index 000000000..3ae0f3882 --- /dev/null +++ b/src/sdk/account/utils/utils.test.ts @@ -0,0 +1,58 @@ +import { ParamType, ethers } from "ethers" +import { type AbiParameter, encodeAbiParameters } from "viem" +import { describe, expect, test } from "vitest" + +describe("utils", async () => { + test.concurrent( + "should have consistent behaviour between ethers.AbiCoder.defaultAbiCoder() and viem.encodeAbiParameters()", + async () => { + const expectedResult = + "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000090f79bf6eb2c4f870365e785982e1f101e93b90600000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090f79bf6eb2c4f870365e785982e1f101e93b906000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000" + + const Executions = ParamType.from({ + type: "tuple(address,uint256,bytes)[]", + baseType: "tuple", + name: "executions", + arrayLength: null, + components: [ + { name: "target", type: "address" }, + { name: "value", type: "uint256" }, + { name: "callData", type: "bytes" } + ] + }) + + const viemExecutions: AbiParameter = { + type: "tuple[]", + components: [ + { name: "target", type: "address" }, + { name: "value", type: "uint256" }, + { name: "callData", type: "bytes" } + ] + } + + const txs = [ + { + target: "0x90F79bf6EB2c4f870365E785982E1f101E93b906", + callData: "0x", + value: 1n + }, + { + target: "0x90F79bf6EB2c4f870365E785982E1f101E93b906", + callData: "0x", + value: 1n + } + ] + + const executionCalldataPrepWithEthers = + ethers.AbiCoder.defaultAbiCoder().encode([Executions], [txs]) + + const executionCalldataPrepWithViem = encodeAbiParameters( + [viemExecutions], + [txs] + ) + + expect(executionCalldataPrepWithEthers).toBe(expectedResult) + expect(executionCalldataPrepWithViem).toBe(expectedResult) + } + ) +}) diff --git a/src/sdk/clients/createBicoBundlerClient.test.ts b/src/sdk/clients/createBicoBundlerClient.test.ts new file mode 100644 index 000000000..2592ff0d0 --- /dev/null +++ b/src/sdk/clients/createBicoBundlerClient.test.ts @@ -0,0 +1,85 @@ +import { http, type Account, type Address, type Chain, isHex } from "viem" +import type { BundlerClient } from "viem/account-abstraction" +import { afterAll, beforeAll, describe, expect, test } from "vitest" +import { toNetwork } from "../../test/testSetup" +import { + getTestAccount, + killNetwork, + toTestClient, + topUp +} from "../../test/testUtils" +import type { MasterClient, NetworkConfig } from "../../test/testUtils" +import contracts from "../__contracts" +import { type NexusAccount, toNexusAccount } from "../account/toNexusAccount" +import { createBicoBundlerClient } from "./createBicoBundlerClient" + +describe("bico.bundler", async () => { + let network: NetworkConfig + let chain: Chain + let bundlerUrl: string + + // Test utils + let testClient: MasterClient + let account: Account + let nexusAccountAddress: Address + let bicoBundler: BundlerClient + let nexusAccount: NexusAccount + + beforeAll(async () => { + network = await toNetwork() + + chain = network.chain + bundlerUrl = network.bundlerUrl + account = getTestAccount(0) + testClient = toTestClient(chain, getTestAccount(5)) + + nexusAccount = await toNexusAccount({ + holder: account, + chain, + transport: http() + }) + + bicoBundler = createBicoBundlerClient({ bundlerUrl, account: nexusAccount }) + nexusAccountAddress = await nexusAccount.getCounterFactualAddress() + await topUp(testClient, nexusAccountAddress) + }) + afterAll(async () => { + await killNetwork([network?.rpcPort, network?.bundlerPort]) + }) + + test.concurrent("should have 4337 bundler actions", async () => { + const [chainId, supportedEntrypoints, preparedUserOp] = await Promise.all([ + bicoBundler.getChainId(), + bicoBundler.getSupportedEntryPoints(), + bicoBundler.prepareUserOperation({ + sender: account.address, + nonce: 0n, + data: "0x", + signature: "0x", + verificationGasLimit: 1n, + preVerificationGas: 1n, + callData: "0x", + callGasLimit: 1n, + maxFeePerGas: 1n, + maxPriorityFeePerGas: 1n, + account: nexusAccount + }) + ]) + expect(chainId).toEqual(chain.id) + expect(supportedEntrypoints).to.include(contracts.entryPoint.address) + expect(preparedUserOp).toHaveProperty("signature") + }) + + test("should send a user operation and get the receipt", async () => { + const calls = [{ to: account.address, value: 1n }] + // Must find gas fees before sending the user operation + const gas = await testClient.estimateFeesPerGas() + const hash = await bicoBundler.sendUserOperation({ + ...gas, + calls, + account: nexusAccount + }) + const receipt = await bicoBundler.waitForUserOperationReceipt({ hash }) + expect(receipt.success).toBeTruthy() + }) +}) diff --git a/src/sdk/clients/createBicoBundlerClient.ts b/src/sdk/clients/createBicoBundlerClient.ts new file mode 100644 index 000000000..9a5d38846 --- /dev/null +++ b/src/sdk/clients/createBicoBundlerClient.ts @@ -0,0 +1,61 @@ +import { http, type OneOf, type Transport } from "viem" +import { + type BundlerClient, + type BundlerClientConfig, + createBundlerClient +} from "viem/account-abstraction" + +type BicoBundlerClientConfig = Omit & + OneOf< + | { + transport?: Transport + } + | { + bundlerUrl: string + } + | { + apiKey?: string + } + > + +/** + * Creates a Bico Bundler Client with a given Transport configured for a Chain. + * + * @param parameters - Configuration for the Bico Bundler Client + * @returns A Bico Bundler Client + * + * @example + * import { createBicoBundlerClient, http } from '@biconomy/sdk' + * import { mainnet } from 'viem/chains' + * + * const bundlerClient = createBicoBundlerClient({ chain: mainnet }); + */ +export const createBicoBundlerClient = ( + parameters: BicoBundlerClientConfig +): BundlerClient => { + if ( + !parameters.apiKey && + !parameters.bundlerUrl && + !parameters.transport && + !parameters?.chain + ) { + throw new Error( + "Cannot set determine a bundler url, please provide a chain." + ) + } + + return createBundlerClient({ + ...parameters, + transport: parameters.transport + ? parameters.transport + : parameters.bundlerUrl + ? http(parameters.bundlerUrl) + : http( + // @ts-ignore: Type saftey provided by the if statement above + `https://bundler.biconomy.io/api/v3/${parameters.chain.id}/${ + parameters.apiKey ?? + "nJPK7B3ru.dd7f7861-190d-41bd-af80-6877f74b8f14" + }` + ) + }) +} diff --git a/src/sdk/clients/createBicoPaymasterClient.ts b/src/sdk/clients/createBicoPaymasterClient.ts new file mode 100644 index 000000000..2d23615af --- /dev/null +++ b/src/sdk/clients/createBicoPaymasterClient.ts @@ -0,0 +1,79 @@ +import { http, type OneOf, type Transport } from "viem" +import { + type PaymasterClient, + type PaymasterClientConfig, + createPaymasterClient +} from "viem/account-abstraction" + +/** + * Configuration options for creating a Bico Paymaster Client. + * @typedef {Object} BicoPaymasterClientConfig + * @property {Transport} [transport] - Optional custom transport. + * @property {string} [paymasterUrl] - URL of the paymaster service. + * @property {number} [chainId] - Chain ID for the network. + * @property {string} [apiKey] - API key for authentication. + */ +type BicoPaymasterClientConfig = Omit & + OneOf< + | { + transport?: Transport + } + | { + paymasterUrl: string + } + | { + chainId: number + apiKey: string + } + > + +/** + * Context for the Bico Paymaster. + */ +export const biconomyPaymasterContext = { + mode: "SPONSORED", + calculateGasLimits: true, + expiryDuration: 300, // duration (secs) for which the generate paymasterAndData will be valid. Default duration is 300 secs. + sponsorshipInfo: { + webhookData: {}, + smartAccountInfo: { + name: "BICONOMY", + version: "3.0.0" + } + } +} + +/** + * Creates a Bico Paymaster Client. + * + * This function sets up a client for interacting with Biconomy's paymaster service. + * It can be configured with a custom transport, a specific paymaster URL, or with a chain ID and API key. + * + * @param {BicoPaymasterClientConfig} parameters - Configuration options for the client. + * @returns {PaymasterClient} A configured Paymaster Client instance. + * + * @example + * // Create a client with a custom transport + * const client1 = createBicoPaymasterClient({ transport: customTransport }) + * + * @example + * // Create a client with a specific paymaster URL + * const client2 = createBicoPaymasterClient({ paymasterUrl: 'https://example.com/paymaster' }) + * + * @example + * // Create a client with chain ID and API key + * const client3 = createBicoPaymasterClient({ chainId: 1, apiKey: 'your-api-key' }) + */ +export const createBicoPaymasterClient = ( + parameters: BicoPaymasterClientConfig +): PaymasterClient => + createPaymasterClient({ + ...parameters, + transport: parameters.transport + ? parameters.transport + : parameters.paymasterUrl + ? http(parameters.paymasterUrl) + : http( + `https://paymaster.biconomy.io/api/v3/${parameters.chainId}/${parameters.apiKey}` + ) + }) diff --git a/src/sdk/clients/createNexusClient.test.ts b/src/sdk/clients/createNexusClient.test.ts new file mode 100644 index 000000000..156819159 --- /dev/null +++ b/src/sdk/clients/createNexusClient.test.ts @@ -0,0 +1,275 @@ +import { AbiCoder, ParamType } from "ethers/abi" +import { JsonRpcProvider } from "ethers/providers" +import { Wallet } from "ethers/wallet" +import { + http, + type AbiParameter, + type Account, + type Address, + type Chain, + type Hex, + encodeAbiParameters, + encodeFunctionData, + parseEther +} from "viem" +import { afterAll, beforeAll, describe, expect, test } from "vitest" +import { CounterAbi } from "../../test/__contracts/abi" +import mockAddresses from "../../test/__contracts/mockAddresses" +import { toNetwork } from "../../test/testSetup" +import { + getBalance, + getTestAccount, + killNetwork, + toTestClient, + topUp +} from "../../test/testUtils" +import type { MasterClient, NetworkConfig } from "../../test/testUtils" +import { pKey } from "../../test/testUtils" +import { addresses } from "../__contracts/addresses" +import { ERROR_MESSAGES } from "../account/utils/Constants" +import { makeInstallDataAndHash } from "../account/utils/Utils" +import { getChain } from "../account/utils/getChain" +import { type NexusClient, createNexusClient } from "./createNexusClient" + +describe("nexus.client", async () => { + let network: NetworkConfig + let chain: Chain + let bundlerUrl: string + + // Test utils + let testClient: MasterClient + let account: Account + let recipientAccount: Account + let recipientAddress: Address + let nexusClient: NexusClient + let nexusAccountAddress: Address + + beforeAll(async () => { + network = await toNetwork() + + chain = network.chain + bundlerUrl = network.bundlerUrl + account = getTestAccount(0) + recipientAccount = getTestAccount(1) + recipientAddress = recipientAccount.address + + testClient = toTestClient(chain, getTestAccount(5)) + + nexusClient = await createNexusClient({ + holder: account, + chain, + transport: http(), + bundlerTransport: http(bundlerUrl) + }) + + nexusAccountAddress = await nexusClient.account.getCounterFactualAddress() + }) + afterAll(async () => { + await killNetwork([network?.rpcPort, network?.bundlerPort]) + }) + + test("should deploy smart account if not deployed", async () => { + const isDeployed = await nexusClient.account.isDeployed() + + if (!isDeployed) { + console.log("Smart account not deployed. Deploying...") + + // Fund the account first + await topUp(testClient, nexusAccountAddress, parseEther("0.01")) + + const hash = await nexusClient.sendTransaction({ + calls: [ + { + to: nexusAccountAddress, + value: 0n, + data: "0x" + } + ] + }) + const { status } = await testClient.waitForTransactionReceipt({ + hash + }) + expect(status).toBe("success") + + const isNowDeployed = await nexusClient.account.isDeployed() + expect(isNowDeployed).toBe(true) + + console.log("Smart account deployed successfully") + } else { + console.log("Smart account already deployed") + } + + // Verify the account is now deployed + const finalDeploymentStatus = await nexusClient.account.isDeployed() + expect(finalDeploymentStatus).toBe(true) + }) + + test("should fund the smart account", async () => { + await topUp(testClient, nexusAccountAddress, parseEther("0.01")) + + const balance = await getBalance(testClient, nexusAccountAddress) + expect(balance > 0) + }) + + // @note @todo this test is only valid for anvil + test("should have account addresses", async () => { + const addresses = await Promise.all([ + account.address, + nexusClient.account.getAddress() + ]) + expect(addresses.every(Boolean)).to.be.true + expect(addresses).toStrictEqual([ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "0x9faF274EB7cc2D342d786Ad0995dB3c0d641446d" // Sender smart account + ]) + }) + + test("should estimate gas for writing to a contract", async () => { + const encodedCall = encodeFunctionData({ + abi: CounterAbi, + functionName: "incrementNumber" + }) + const call = { + to: mockAddresses.Counter, + data: encodedCall + } + const results = await Promise.all([ + nexusClient.estimateUserOperationGas({ calls: [call] }), + nexusClient.estimateUserOperationGas({ calls: [call, call] }) + ]) + + const increasingGasExpenditure = results.every( + ({ preVerificationGas }, i) => + preVerificationGas > (results[i - 1]?.preVerificationGas ?? 0) + ) + + expect(increasingGasExpenditure).toBeTruthy() + }, 60000) + + test("should check enable mode", async () => { + const result = makeInstallDataAndHash(account.address, [ + { + type: "validator", + config: account.address + } + ]) + + expect(result).toBeTruthy() + }, 30000) + + test.skip("should create a nexusAccount from an ethers signer", async () => { + const ethersProvider = new JsonRpcProvider(chain.rpcUrls.default.http[0]) + const ethersSigner = new Wallet(pKey, ethersProvider) + + const ethOwnerNexusClient = await createNexusClient({ + chain, + owner: (await ethersSigner.getAddress()) as Hex, + bundlerTransport: http(bundlerUrl), + transport: http(chain.rpcUrls.default.http[0]) + }) + + expect(await ethOwnerNexusClient.account.getAddress()).toBeTruthy() + }) + + test("should read estimated user op gas values", async () => { + const userOp = await nexusClient.prepareUserOperation({ + calls: [ + { + to: recipientAccount.address, + data: "0x" + } + ] + }) + + const estimatedGas = await nexusClient.estimateUserOperationGas(userOp) + expect(estimatedGas.verificationGasLimit).toBeTruthy() + expect(estimatedGas.callGasLimit).toBeTruthy() + expect(estimatedGas.preVerificationGas).toBeTruthy() + }, 30000) + + test.skip("should create a smart account with paymaster with an api key", async () => { + const paymaster = nexusClient.paymaster + expect(paymaster).not.toBeNull() + expect(paymaster).not.toBeUndefined() + }) + + test("should return chain object for chain id 1", async () => { + const chainId = 1 + const chain = getChain(chainId) + expect(chain.id).toBe(chainId) + }) + + test("should have correct fields", async () => { + const chainId = 1 + const chain = getChain(chainId) + ;[ + "blockExplorers", + "contracts", + "fees", + "formatters", + "id", + "name", + "nativeCurrency", + "rpcUrls", + "serializers" + ].every((field) => { + expect(chain).toHaveProperty(field) + }) + }) + + test("should throw an error, chain id not found", async () => { + const chainId = 0 + expect(() => getChain(chainId)).toThrow(ERROR_MESSAGES.CHAIN_NOT_FOUND) + }) + + test("should have attached erc757 actions", async () => { + const [ + accountId, + isModuleInstalled, + supportsExecutionMode, + supportsModule + ] = await Promise.all([ + nexusClient.accountId(), + nexusClient.isModuleInstalled({ + module: { + type: "validator", + address: addresses.K1Validator, + context: "0x" + } + }), + nexusClient.supportsExecutionMode({ + type: "delegatecall" + }), + nexusClient.supportsModule({ + type: "validator" + }) + ]) + expect(accountId).toBe("biconomy.nexus.1.0.0-beta") + expect(isModuleInstalled).toBe(true) + expect(supportsExecutionMode).toBe(true) + expect(supportsModule).toBe(true) + }) + + test("should send eth twice", async () => { + const balanceBefore = await getBalance(testClient, recipientAddress) + const tx = { to: recipientAddress, value: 1n } + const hash = await nexusClient.sendTransaction({ calls: [tx, tx] }) + const { status } = await testClient.waitForTransactionReceipt({ hash }) + const balanceAfter = await getBalance(testClient, recipientAddress) + expect(status).toBe("success") + expect(balanceAfter - balanceBefore).toBe(2n) + }) + + // Not working + test.skip("should uninstall modules", async () => { + const result = await nexusClient.uninstallModules({ + modules: [ + { + type: "validator", + address: addresses.K1Validator, + context: "0x" + } + ] + }) + }) +}) diff --git a/src/sdk/clients/createNexusClient.ts b/src/sdk/clients/createNexusClient.ts new file mode 100644 index 000000000..47c5ea688 --- /dev/null +++ b/src/sdk/clients/createNexusClient.ts @@ -0,0 +1,222 @@ +import type { + Address, + Chain, + Client, + ClientConfig, + EstimateFeesPerGasReturnType, + Prettify, + PublicClient, + RpcSchema, + Transport +} from "viem" +import type { + BundlerActions, + BundlerClientConfig, + PaymasterActions, + SmartAccount, + UserOperationRequest +} from "viem/account-abstraction" +import contracts from "../__contracts" +import type { Call } from "../account/utils/Types" + +import { type NexusAccount, toNexusAccount } from "../account/toNexusAccount" +import type { UnknownHolder } from "../account/utils/toHolder" +import type { BaseExecutionModule } from "../modules/base/BaseExecutionModule" +import type { BaseValidationModule } from "../modules/base/BaseValidationModule" +import { createBicoBundlerClient } from "./createBicoBundlerClient" +import { type Erc7579Actions, erc7579Actions } from "./decorators/erc7579" +import { + type SmartAccountActions, + smartAccountActions +} from "./decorators/smartAccount" + +/** + * Parameters for sending a transaction + */ +export type SendTransactionParameters = { + calls: Call | Call[] +} + +/** + * Nexus Client type + */ +export type NexusClient< + transport extends Transport = Transport, + chain extends Chain | undefined = Chain | undefined, + account extends NexusAccount | undefined = NexusAccount | undefined, + client extends Client | undefined = Client | undefined, + rpcSchema extends RpcSchema | undefined = undefined +> = Prettify< + Pick< + ClientConfig, + "cacheTime" | "chain" | "key" | "name" | "pollingInterval" | "rpcSchema" + > & + BundlerActions & + Erc7579Actions & + SmartAccountActions & { + /** + * The Nexus account associated with this client + */ + account: NexusAccount + /** + * Optional client for additional functionality + */ + client?: client | Client | undefined + /** + * Transport configuration for the bundler + */ + bundlerTransport?: BundlerClientConfig["transport"] + /** + * Optional paymaster configuration + */ + paymaster?: BundlerClientConfig["paymaster"] | undefined + /** + * Optional paymaster context + */ + paymasterContext?: BundlerClientConfig["paymasterContext"] | undefined + /** + * Optional user operation configuration + */ + userOperation?: BundlerClientConfig["userOperation"] | undefined + } +> + +/** + * Configuration for creating a Nexus Client + */ +export type NexusClientConfig< + transport extends Transport = Transport, + chain extends Chain | undefined = Chain | undefined, + account extends SmartAccount | undefined = SmartAccount | undefined, + client extends Client | undefined = Client | undefined, + rpcSchema extends RpcSchema | undefined = undefined +> = Prettify< + Pick< + ClientConfig, + | "account" + | "cacheTime" + | "chain" + | "key" + | "name" + | "pollingInterval" + | "rpcSchema" + > & { + /** RPC URL. */ + transport: transport + /** Bundler URL. */ + bundlerTransport: transport + /** Client that points to an Execution RPC URL. */ + client?: client | Client | undefined + /** Paymaster configuration. */ + paymaster?: + | true + | { + /** Retrieves paymaster-related User Operation properties to be used for sending the User Operation. */ + getPaymasterData?: PaymasterActions["getPaymasterData"] | undefined + /** Retrieves paymaster-related User Operation properties to be used for gas estimation. */ + getPaymasterStubData?: + | PaymasterActions["getPaymasterStubData"] + | undefined + } + | undefined + /** Paymaster context to pass to `getPaymasterData` and `getPaymasterStubData` calls. */ + paymasterContext?: unknown + /** User Operation configuration. */ + userOperation?: + | { + /** Prepares fee properties for the User Operation request. */ + estimateFeesPerGas?: + | ((parameters: { + account: account | SmartAccount + bundlerClient: Client + userOperation: UserOperationRequest + }) => Promise>) + | undefined + } + | undefined + /** Owner of the account. */ + holder: UnknownHolder + /** Index of the account. */ + index?: bigint + /** Active module of the account. */ + activeModule?: BaseValidationModule + /** Executor module of the account. */ + executorModule?: BaseExecutionModule + /** Factory address of the account. */ + factoryAddress?: Address + /** Owner module */ + k1ValidatorAddress?: Address + } +> + +/** + * Creates a Nexus Client for interacting with the Nexus smart account system. + * + * @param parameters - {@link NexusClientConfig} + * @returns Nexus Client. {@link NexusClient} + * + * @example + * import { createNexusClient } from '@biconomy/sdk' + * import { http } from 'viem' + * import { mainnet } from 'viem/chains' + * + * const nexusClient = await createNexusClient({ + * chain: mainnet, + * transport: http('https://mainnet.infura.io/v3/YOUR-PROJECT-ID'), + * bundlerTransport: http('https://api.biconomy.io'), + * holder: '0x...', + * }) + */ +export async function createNexusClient( + parameters: NexusClientConfig +): Promise { + const { + client: client_, + chain = parameters.chain ?? client_?.chain, + holder, + index = 0n, + key = "nexus client", + name = "Nexus Client", + activeModule, + factoryAddress = contracts.k1ValidatorFactory.address, + k1ValidatorAddress = contracts.k1Validator.address, + bundlerTransport, + transport, + userOperation = { + estimateFeesPerGas: async (parameters) => { + const feeData = await ( + parameters?.account?.client as PublicClient + )?.estimateFeesPerGas?.() + return { + maxFeePerGas: feeData.maxFeePerGas * 2n, + maxPriorityFeePerGas: feeData.maxPriorityFeePerGas * 2n + } + } + } + } = parameters + + if (!chain) throw new Error("Missing chain") + + const nexusAccount = await toNexusAccount({ + transport, + chain, + holder, + index, + activeModule, + factoryAddress, + k1ValidatorAddress + }) + + const bundler = createBicoBundlerClient({ + ...parameters, + key, + name, + account: nexusAccount, + transport: bundlerTransport, + userOperation + }) + .extend(erc7579Actions()) + .extend(smartAccountActions()) + + return bundler as unknown as NexusClient +} diff --git a/src/sdk/clients/decorators/erc7579/accountId.ts b/src/sdk/clients/decorators/erc7579/accountId.ts new file mode 100644 index 000000000..7068e9600 --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/accountId.ts @@ -0,0 +1,108 @@ +import { + type Chain, + type Client, + ContractFunctionExecutionError, + type Transport, + decodeFunctionResult, + encodeFunctionData +} from "viem" +import type { + GetSmartAccountParameter, + SmartAccount +} from "viem/account-abstraction" +import { call, readContract } from "viem/actions" +import { getAction } from "viem/utils" +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" + +/** + * Retrieves the account ID for a given smart account. + * + * @param client - The client instance. + * @param args - Optional parameters for getting the smart account. + * @returns The account ID as a string. + * @throws {AccountNotFoundError} If the account is not found. + * @throws {Error} If the accountId result is empty. + * + * @example + * import { accountId } from '@biconomy/sdk' + * + * const id = await accountId(nexusClient) + * console.log(id) // 'example_account_id' + */ +export async function accountId( + client: Client, + args?: GetSmartAccountParameter +): Promise { + let account_ = client.account + + if (args) { + account_ = args.account as TSmartAccount + } + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = account_ as SmartAccount + + const publicClient = account.client + + const abi = [ + { + name: "accountId", + type: "function", + stateMutability: "view", + inputs: [], + outputs: [ + { + type: "string", + name: "accountImplementationId" + } + ] + } + ] as const + + try { + return await getAction( + publicClient, + readContract, + "readContract" + )({ + abi, + functionName: "accountId", + address: await account.getAddress() + }) + } catch (error) { + if (error instanceof ContractFunctionExecutionError) { + const { factory, factoryData } = await account.getFactoryArgs() + + const result = await getAction( + publicClient, + call, + "call" + )({ + factory: factory, + factoryData: factoryData, + to: account.address, + data: encodeFunctionData({ + abi, + functionName: "accountId" + }) + }) + + if (!result || !result.data) { + throw new Error("accountId result is empty") + } + + return decodeFunctionResult({ + abi, + functionName: "accountId", + data: result.data + }) + } + + throw error + } +} diff --git a/src/sdk/clients/decorators/erc7579/erc7579.decorators.test.ts b/src/sdk/clients/decorators/erc7579/erc7579.decorators.test.ts new file mode 100644 index 000000000..e8d5c7cc5 --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/erc7579.decorators.test.ts @@ -0,0 +1,116 @@ +import { textSpanOverlapsWith } from "typescript" +import { http, type Account, type Address, type Chain, isHex } from "viem" +import { afterAll, beforeAll, describe, expect, test } from "vitest" +import { toNetwork } from "../../../../test/testSetup" +import { + type MasterClient, + type NetworkConfig, + fundAndDeployClients, + getTestAccount, + killNetwork, + toTestClient +} from "../../../../test/testUtils" +import contracts from "../../../__contracts" +import { type NexusClient, createNexusClient } from "../../createNexusClient" + +describe("erc7579.decorators", async () => { + let network: NetworkConfig + let chain: Chain + let bundlerUrl: string + + // Test utils + let testClient: MasterClient + let account: Account + let nexusClient: NexusClient + let nexusAccountAddress: Address + let recipient: Account + let recipientAddress: Address + + beforeAll(async () => { + network = await toNetwork() + + chain = network.chain + bundlerUrl = network.bundlerUrl + account = getTestAccount(0) + recipient = getTestAccount(1) + recipientAddress = recipient.address + testClient = toTestClient(chain, getTestAccount(5)) + + nexusClient = await createNexusClient({ + holder: account, + chain, + transport: http(), + bundlerTransport: http(bundlerUrl) + }) + + nexusAccountAddress = await nexusClient.account.getCounterFactualAddress() + await fundAndDeployClients(testClient, [nexusClient]) + }) + + afterAll(async () => { + await killNetwork([network?.rpcPort, network?.bundlerPort]) + }) + + test.concurrent("should test read methods", async () => { + const [ + installedValidators, + installedExecutors, + activeHook, + fallbackSelector, + supportsValidator, + supportsDelegateCall, + isK1ValidatorInstalled + ] = await Promise.all([ + nexusClient.getInstalledValidators({}), + nexusClient.getInstalledExecutors({}), + nexusClient.getActiveHook({}), + nexusClient.getFallbackBySelector({ selector: "0xcb5baf0f" }), + nexusClient.supportsModule({ type: "validator" }), + nexusClient.supportsExecutionMode({ type: "delegatecall" }), + nexusClient.isModuleInstalled({ + module: { + type: "validator", + address: contracts.k1Validator.address, + context: "0x" + } + }) + ]) + + expect(installedExecutors[0].length).toBeTypeOf("number") + expect(installedValidators[0]).toEqual([contracts.k1Validator.address]) + expect(isHex(activeHook)).toBe(true) + expect(fallbackSelector.length).toBeTypeOf("number") + expect(supportsValidator).toBe(true) + expect(supportsDelegateCall).toBe(true) + expect(isK1ValidatorInstalled).toBe(true) + }) + + test.skip("should uninstall a module", async () => { + const gas = await testClient.estimateFeesPerGas() + + const hash = await nexusClient.uninstallModule({ + ...gas, + module: { + type: "validator", + address: contracts.k1Validator.address, + context: "0x" + } + }) + + const { success } = await nexusClient.waitForUserOperationReceipt({ hash }) + expect(success).toBe(true) + }) + + test.skip("should install a module", async () => { + const hash = await nexusClient.installModule({ + module: { + type: "validator", + address: contracts.k1Validator.address, + context: "0x" + } + }) + + const { success } = await nexusClient.waitForUserOperationReceipt({ hash }) + expect(success).toBe(true) + }) +}) diff --git a/src/sdk/clients/decorators/erc7579/getActiveHook.ts b/src/sdk/clients/decorators/erc7579/getActiveHook.ts new file mode 100644 index 000000000..d13a27871 --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/getActiveHook.ts @@ -0,0 +1,69 @@ +import type { Chain, Client, Hex, Transport } from "viem" +import type { + GetSmartAccountParameter, + SmartAccount +} from "viem/account-abstraction" +import { readContract } from "viem/actions" +import { getAction, parseAccount } from "viem/utils" +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" + +export type GetActiveHookParameters< + TSmartAccount extends SmartAccount | undefined +> = GetSmartAccountParameter + +/** + * Retrieves the active hook for a given smart account. + * + * @param client - The client instance. + * @param parameters - Parameters for getting the smart account. + * @returns The address of the active hook as a hexadecimal string. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { getActiveHook } from '@biconomy/sdk' + * + * const activeHook = await getActiveHook(nexusClient) + * console.log(activeHook) // '0x...' + */ +export async function getActiveHook< + TSmartAccount extends SmartAccount | undefined +>( + client: Client, + parameters: GetActiveHookParameters +): Promise { + const { account: account_ = client.account } = parameters + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + const publicClient = account.client + + return getAction( + publicClient, + readContract, + "readContract" + )({ + address: account.address, + abi: [ + { + inputs: [], + name: "getActiveHook", + outputs: [ + { + internalType: "address", + name: "hook", + type: "address" + } + ], + stateMutability: "view", + type: "function" + } + ], + functionName: "getActiveHook" + }) as Promise +} diff --git a/src/sdk/clients/decorators/erc7579/getFallbackBySelector.ts b/src/sdk/clients/decorators/erc7579/getFallbackBySelector.ts new file mode 100644 index 000000000..22b925aef --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/getFallbackBySelector.ts @@ -0,0 +1,90 @@ +import type { Chain, Client, Hex, Transport } from "viem" +import type { + GetSmartAccountParameter, + SmartAccount +} from "viem/account-abstraction" +import { readContract } from "viem/actions" +import { getAction, parseAccount } from "viem/utils" +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" +import { GENERIC_FALLBACK_SELECTOR } from "../../../account/utils/Constants" + +export type GetFallbackBySelectorParameters< + TSmartAccount extends SmartAccount | undefined +> = GetSmartAccountParameter & + Partial<{ + selector?: Hex + }> + +/** + * Retrieves the fallback handler for a given selector in a smart account. + * + * @param client - The client instance. + * @param parameters - Parameters including the smart account and optional selector. + * @returns A tuple containing the call type and address of the fallback handler. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { getFallbackBySelector } from '@biconomy/sdk' + * + * const [callType, handlerAddress] = await getFallbackBySelector(nexusClient, { + * selector: '0x12345678' + * }) + * console.log(callType, handlerAddress) // '0x1' '0x...' + */ +export async function getFallbackBySelector< + TSmartAccount extends SmartAccount | undefined +>( + client: Client, + parameters: GetFallbackBySelectorParameters +): Promise<[Hex, Hex]> { + const { + account: account_ = client.account, + selector = GENERIC_FALLBACK_SELECTOR + } = parameters + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + const publicClient = account.client + + return getAction( + publicClient, + readContract, + "readContract" + )({ + address: account.address, + abi: [ + { + inputs: [ + { + internalType: "bytes4", + name: "selector", + type: "bytes4" + } + ], + name: "getFallbackHandlerBySelector", + outputs: [ + { + internalType: "CallType", + name: "", + type: "bytes1" + }, + { + internalType: "address", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + } + ], + functionName: "getFallbackHandlerBySelector", + args: [selector] + }) as Promise<[Hex, Hex]> +} diff --git a/src/sdk/clients/decorators/erc7579/getInstalledExecutors.ts b/src/sdk/clients/decorators/erc7579/getInstalledExecutors.ts new file mode 100644 index 000000000..9c4adaca3 --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/getInstalledExecutors.ts @@ -0,0 +1,96 @@ +import type { Chain, Client, Hex, Transport } from "viem" +import type { + GetSmartAccountParameter, + SmartAccount +} from "viem/account-abstraction" +import { readContract } from "viem/actions" +import { getAction, parseAccount } from "viem/utils" +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" +import { SENTINEL_ADDRESS } from "../../../account/utils/Constants" + +export type GetInstalledExecutorsParameters< + TSmartAccount extends SmartAccount | undefined +> = GetSmartAccountParameter & { + pageSize?: bigint + cursor?: Hex +} + +/** + * Retrieves the installed executors for a given smart account. + * + * @param client - The client instance. + * @param parameters - Parameters including the smart account, page size, and cursor. + * @returns A tuple containing an array of executor addresses and the next cursor. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { getInstalledExecutors } from '@biconomy/sdk' + * + * const [executors, nextCursor] = await getInstalledExecutors(nexusClient, { + * pageSize: 10n + * }) + * console.log(executors, nextCursor) // ['0x...', '0x...'], '0x...' + */ +export async function getInstalledExecutors< + TSmartAccount extends SmartAccount | undefined +>( + client: Client, + parameters: GetInstalledExecutorsParameters +): Promise { + const { + account: account_ = client.account, + pageSize = 100n, + cursor = SENTINEL_ADDRESS + } = parameters + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + const publicClient = account.client + + return getAction( + publicClient, + readContract, + "readContract" + )({ + address: account.address, + abi: [ + { + inputs: [ + { + internalType: "address", + name: "cursor", + type: "address" + }, + { + internalType: "uint256", + name: "size", + type: "uint256" + } + ], + name: "getExecutorsPaginated", + outputs: [ + { + internalType: "address[]", + name: "array", + type: "address[]" + }, + { + internalType: "address", + name: "next", + type: "address" + } + ], + stateMutability: "view", + type: "function" + } + ], + functionName: "getExecutorsPaginated", + args: [cursor, pageSize] + }) as Promise +} diff --git a/src/sdk/clients/decorators/erc7579/getInstalledValidators.ts b/src/sdk/clients/decorators/erc7579/getInstalledValidators.ts new file mode 100644 index 000000000..960165782 --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/getInstalledValidators.ts @@ -0,0 +1,96 @@ +import type { Chain, Client, Hex, Transport } from "viem" +import type { + GetSmartAccountParameter, + SmartAccount +} from "viem/account-abstraction" +import { readContract } from "viem/actions" +import { getAction, parseAccount } from "viem/utils" +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" +import { SENTINEL_ADDRESS } from "../../../account/utils/Constants" + +export type GetInstalledValidatorsParameters< + TSmartAccount extends SmartAccount | undefined +> = GetSmartAccountParameter & { + pageSize?: bigint + cursor?: Hex +} + +/** + * Retrieves the installed validators for a given smart account. + * + * @param client - The client instance. + * @param parameters - Parameters including the smart account, page size, and cursor. + * @returns A tuple containing an array of validator addresses and the next cursor. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { getInstalledValidators } from '@biconomy/sdk' + * + * const [validators, nextCursor] = await getInstalledValidators(nexusClient, { + * pageSize: 10n + * }) + * console.log(validators, nextCursor) // ['0x...', '0x...'], '0x...' + */ +export async function getInstalledValidators< + TSmartAccount extends SmartAccount | undefined +>( + client: Client, + parameters: GetInstalledValidatorsParameters +): Promise { + const { + account: account_ = client.account, + pageSize = 100n, + cursor = SENTINEL_ADDRESS + } = parameters + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + const publicClient = account.client + + return getAction( + publicClient, + readContract, + "readContract" + )({ + address: account.address, + abi: [ + { + inputs: [ + { + internalType: "address", + name: "cursor", + type: "address" + }, + { + internalType: "uint256", + name: "size", + type: "uint256" + } + ], + name: "getValidatorsPaginated", + outputs: [ + { + internalType: "address[]", + name: "array", + type: "address[]" + }, + { + internalType: "address", + name: "next", + type: "address" + } + ], + stateMutability: "view", + type: "function" + } + ], + functionName: "getValidatorsPaginated", + args: [cursor, pageSize] + }) as Promise +} diff --git a/src/sdk/clients/decorators/erc7579/index.ts b/src/sdk/clients/decorators/erc7579/index.ts new file mode 100644 index 000000000..a0e79cd96 --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/index.ts @@ -0,0 +1,148 @@ +import type { Address, Chain, Client, Hash, Hex, Transport } from "viem" +import type { + GetSmartAccountParameter, + SmartAccount +} from "viem/account-abstraction" +import type { ModuleType, SafeHookType } from "../../../modules/utils/Types.js" +import { accountId } from "./accountId.js" +import { type GetActiveHookParameters, getActiveHook } from "./getActiveHook.js" +import { + type GetFallbackBySelectorParameters, + getFallbackBySelector +} from "./getFallbackBySelector.js" +import { + type GetInstalledExecutorsParameters, + getInstalledExecutors +} from "./getInstalledExecutors.js" +import { + type GetInstalledValidatorsParameters, + getInstalledValidators +} from "./getInstalledValidators.js" +import { type InstallModuleParameters, installModule } from "./installModule.js" +import { + type InstallModulesParameters, + installModules +} from "./installModules.js" +import { + type IsModuleInstalledParameters, + isModuleInstalled +} from "./isModuleInstalled.js" +import { + type SupportsExecutionModeParameters, + supportsExecutionMode +} from "./supportsExecutionMode.js" +import type { CallType, ExecutionMode } from "./supportsExecutionMode.js" +import { + type SupportsModuleParameters, + supportsModule +} from "./supportsModule.js" +import { + type UninstallModuleParameters, + uninstallModule +} from "./uninstallModule.js" +import { + type UninstallModulesParameters, + uninstallModules +} from "./uninstallModules.js" + +export type Erc7579Actions = { + accountId: (args?: GetSmartAccountParameter) => Promise + installModule: (args: InstallModuleParameters) => Promise + installModules: ( + args: InstallModulesParameters + ) => Promise + isModuleInstalled: ( + args: IsModuleInstalledParameters + ) => Promise + supportsExecutionMode: ( + args: SupportsExecutionModeParameters + ) => Promise + supportsModule: ( + args: SupportsModuleParameters + ) => Promise + uninstallModule: ( + args: UninstallModuleParameters + ) => Promise + uninstallModules: ( + args: UninstallModulesParameters + ) => Promise + getInstalledValidators: ( + args: GetInstalledValidatorsParameters + ) => Promise + getInstalledExecutors: ( + args: GetInstalledExecutorsParameters + ) => Promise + getActiveHook: (args: GetActiveHookParameters) => Promise + getFallbackBySelector: ( + args: GetFallbackBySelectorParameters + ) => Promise<[Hex, Hex]> +} + +export type { + InstallModuleParameters, + IsModuleInstalledParameters, + CallType, + ExecutionMode, + SupportsExecutionModeParameters, + ModuleType, + SupportsModuleParameters, + UninstallModuleParameters, + GetInstalledValidatorsParameters, + GetInstalledExecutorsParameters, + GetActiveHookParameters +} + +export { + accountId, + installModule, + installModules, + isModuleInstalled, + supportsExecutionMode, + supportsModule, + uninstallModule, + uninstallModules, + getInstalledValidators, + getInstalledExecutors, + getActiveHook, + getFallbackBySelector +} + +export function erc7579Actions() { + return ( + client: Client + ): Erc7579Actions => ({ + accountId: (args) => accountId(client, args), + installModule: (args) => installModule(client, args), + installModules: (args) => installModules(client, args), + isModuleInstalled: (args) => isModuleInstalled(client, args), + supportsExecutionMode: (args) => supportsExecutionMode(client, args), + supportsModule: (args) => supportsModule(client, args), + uninstallModule: (args) => uninstallModule(client, args), + uninstallModules: (args) => uninstallModules(client, args), + getInstalledValidators: (args) => getInstalledValidators(client, args), + getInstalledExecutors: (args) => getInstalledExecutors(client, args), + getActiveHook: (args) => getActiveHook(client, args), + getFallbackBySelector: (args) => getFallbackBySelector(client, args) + }) +} + +export type Module = { + address: Address + context: Hex + additionalContext?: Hex + type: ModuleType + + /* ---- kernel module params ---- */ + // these param needed for installing validator, executor, fallback handler + hook?: Address + /* ---- end kernel module params ---- */ + + /* ---- safe module params ---- */ + // these two params needed for installing hooks + hookType?: SafeHookType + selector?: Hex + + // these two params needed for installing fallback handlers + functionSig?: Hex + callType?: CallType +} diff --git a/src/sdk/clients/decorators/erc7579/installModule.ts b/src/sdk/clients/decorators/erc7579/installModule.ts new file mode 100644 index 000000000..f5eb21548 --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/installModule.ts @@ -0,0 +1,105 @@ +import { type Client, type Hex, encodeFunctionData, getAddress } from "viem" +import { + type GetSmartAccountParameter, + type SmartAccount, + sendUserOperation +} from "viem/account-abstraction" +import { getAction, parseAccount } from "viem/utils" +import type { Module } from "." +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" +import { parseModuleTypeId } from "./supportsModule" + +export type InstallModuleParameters< + TSmartAccount extends SmartAccount | undefined +> = GetSmartAccountParameter & { + module: Module + maxFeePerGas?: bigint + maxPriorityFeePerGas?: bigint + nonce?: bigint +} + +/** + * Installs a module on a given smart account. + * + * @param client - The client instance. + * @param parameters - Parameters including the smart account, module to install, and optional gas settings. + * @returns The hash of the user operation as a hexadecimal string. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { installModule } from '@biconomy/sdk' + * + * const userOpHash = await installModule(nexusClient, { + * module: { + * type: 'executor', + * address: '0x...', + * context: '0x' + * } + * }) + * console.log(userOpHash) // '0x...' + */ +export async function installModule< + TSmartAccount extends SmartAccount | undefined +>( + client: Client, + parameters: InstallModuleParameters +): Promise { + const { + account: account_ = client.account, + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + module: { type, address, context } + } = parameters + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + return getAction( + client, + sendUserOperation, + "sendUserOperation" + )({ + calls: [ + { + to: account.address, + value: BigInt(0), + data: encodeFunctionData({ + abi: [ + { + name: "installModule", + type: "function", + stateMutability: "nonpayable", + inputs: [ + { + type: "uint256", + name: "moduleTypeId" + }, + { + type: "address", + name: "module" + }, + { + type: "bytes", + name: "initData" + } + ], + outputs: [] + } + ], + functionName: "installModule", + args: [parseModuleTypeId(type), getAddress(address), context] + }) + } + ], + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + account + }) +} diff --git a/src/sdk/clients/decorators/erc7579/installModules.ts b/src/sdk/clients/decorators/erc7579/installModules.ts new file mode 100644 index 000000000..ac7366b8d --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/installModules.ts @@ -0,0 +1,113 @@ +import { + type Address, + type Chain, + type Client, + type Hex, + type Transport, + encodeFunctionData, + getAddress +} from "viem" +import { + type GetSmartAccountParameter, + type SmartAccount, + sendUserOperation +} from "viem/account-abstraction" +import { getAction, parseAccount } from "viem/utils" +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" +import type { ModuleType } from "../../../modules/utils/Types" +import { parseModuleTypeId } from "./supportsModule" + +export type InstallModulesParameters< + TSmartAccount extends SmartAccount | undefined +> = GetSmartAccountParameter & { + modules: { + type: ModuleType + address: Address + context: Hex + }[] + maxFeePerGas?: bigint + maxPriorityFeePerGas?: bigint + nonce?: bigint +} + +/** + * Installs multiple modules on a given smart account. + * + * @param client - The client instance. + * @param parameters - Parameters including the smart account, modules to install, and optional gas settings. + * @returns The hash of the user operation as a hexadecimal string. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { installModules } from '@biconomy/sdk' + * + * const userOpHash = await installModules(nexusClient, { + * modules: [ + * { type: 'executor', address: '0x...', context: '0x' }, + * { type: 'validator', address: '0x...', context: '0x' } + * ] + * }) + * console.log(userOpHash) // '0x...' + */ +export async function installModules< + TSmartAccount extends SmartAccount | undefined +>( + client: Client, + parameters: InstallModulesParameters +): Promise { + const { + account: account_ = client.account, + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + modules + } = parameters + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + return getAction( + client, + sendUserOperation, + "sendUserOperation" + )({ + calls: modules.map(({ type, address, context }) => ({ + to: account.address, + value: BigInt(0), + data: encodeFunctionData({ + abi: [ + { + name: "installModule", + type: "function", + stateMutability: "nonpayable", + inputs: [ + { + type: "uint256", + name: "moduleTypeId" + }, + { + type: "address", + name: "module" + }, + { + type: "bytes", + name: "initData" + } + ], + outputs: [] + } + ], + functionName: "installModule", + args: [parseModuleTypeId(type), getAddress(address), context] + }) + })), + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + account: account + }) +} diff --git a/src/sdk/clients/decorators/erc7579/isModuleInstalled.ts b/src/sdk/clients/decorators/erc7579/isModuleInstalled.ts new file mode 100644 index 000000000..a135bb9bb --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/isModuleInstalled.ts @@ -0,0 +1,138 @@ +import { + type Chain, + type Client, + ContractFunctionExecutionError, + type Transport, + decodeFunctionResult, + encodeFunctionData, + getAddress +} from "viem" +import type { + GetSmartAccountParameter, + SmartAccount +} from "viem/account-abstraction" +import { call, readContract } from "viem/actions" +import { getAction, parseAccount } from "viem/utils" +import type { Module } from "." +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" +import { parseModuleTypeId } from "./supportsModule" + +export type IsModuleInstalledParameters< + TSmartAccount extends SmartAccount | undefined +> = GetSmartAccountParameter & { + module: Module +} + +/** + * Checks if a specific module is installed on a given smart account. + * + * @param client - The client instance. + * @param parameters - Parameters including the smart account and the module to check. + * @returns A boolean indicating whether the module is installed. + * @throws {AccountNotFoundError} If the account is not found. + * @throws {Error} If the accountId result is empty. + * + * @example + * import { isModuleInstalled } from '@biconomy/sdk' + * + * const isInstalled = await isModuleInstalled(nexusClient, { + * module: { + * type: 'executor', + * address: '0x...', + * context: '0x' + * } + * }) + * console.log(isInstalled) // true or false + */ +export async function isModuleInstalled< + TSmartAccount extends SmartAccount | undefined +>( + client: Client, + parameters: IsModuleInstalledParameters +): Promise { + const { + account: account_ = client.account, + module: { address, context, type } + } = parameters + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + const publicClient = account.client + + const abi = [ + { + name: "isModuleInstalled", + type: "function", + stateMutability: "view", + inputs: [ + { + type: "uint256", + name: "moduleTypeId" + }, + { + type: "address", + name: "module" + }, + { + type: "bytes", + name: "additionalContext" + } + ], + outputs: [ + { + type: "bool" + } + ] + } + ] as const + + try { + return (await getAction( + publicClient, + readContract, + "readContract" + )({ + abi, + functionName: "isModuleInstalled", + args: [parseModuleTypeId(type), getAddress(address), context], + address: account.address + })) as unknown as Promise + } catch (error) { + if (error instanceof ContractFunctionExecutionError) { + const { factory, factoryData } = await account.getFactoryArgs() + + const result = await getAction( + publicClient, + call, + "call" + )({ + factory: factory, + factoryData: factoryData, + to: account.address, + data: encodeFunctionData({ + abi, + functionName: "isModuleInstalled", + args: [parseModuleTypeId(type), getAddress(address), context] + }) + }) + + if (!result || !result.data) { + throw new Error("accountId result is empty") + } + + return decodeFunctionResult({ + abi, + functionName: "isModuleInstalled", + data: result.data + }) as unknown as Promise + } + + throw error + } +} diff --git a/src/sdk/clients/decorators/erc7579/supportsExecutionMode.ts b/src/sdk/clients/decorators/erc7579/supportsExecutionMode.ts new file mode 100644 index 000000000..23c788b85 --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/supportsExecutionMode.ts @@ -0,0 +1,183 @@ +import { + type Chain, + type Client, + ContractFunctionExecutionError, + type Hex, + type Transport, + decodeFunctionResult, + encodeFunctionData, + encodePacked, + toBytes, + toHex +} from "viem" +import type { + GetSmartAccountParameter, + SmartAccount +} from "viem/account-abstraction" +import { call, readContract } from "viem/actions" +import { getAction } from "viem/utils" +import { parseAccount } from "viem/utils" +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" + +export type CallType = "call" | "delegatecall" | "batchcall" + +export type ExecutionMode = { + type: callType + revertOnError?: boolean + selector?: Hex + context?: Hex +} + +export type SupportsExecutionModeParameters< + TSmartAccount extends SmartAccount | undefined, + callType extends CallType = CallType +> = GetSmartAccountParameter & ExecutionMode + +function parseCallType(callType: CallType) { + switch (callType) { + case "call": + return "0x00" + case "batchcall": + return "0x01" + case "delegatecall": + return "0xff" + } +} + +/** + * Encodes the execution mode for a smart account operation. + * + * @param mode - The execution mode parameters. + * @returns The encoded execution mode as a hexadecimal string. + */ +export function encodeExecutionMode({ + type, + revertOnError, + selector, + context +}: ExecutionMode): Hex { + return encodePacked( + ["bytes1", "bytes1", "bytes4", "bytes4", "bytes22"], + [ + toHex(toBytes(parseCallType(type), { size: 1 })), + toHex(toBytes(revertOnError ? "0x01" : "0x00", { size: 1 })), + toHex(toBytes("0x0", { size: 4 })), + toHex(toBytes(selector ?? "0x", { size: 4 })), + toHex(toBytes(context ?? "0x", { size: 22 })) + ] + ) +} + +/** + * Checks if a smart account supports a specific execution mode. + * + * @param client - The client instance. + * @param args - Parameters including the smart account and execution mode details. + * @returns A boolean indicating whether the execution mode is supported. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { supportsExecutionMode } from '@biconomy/sdk' + * + * const isSupported = await supportsExecutionMode(nexusClient, { + * type: 'call', + * revertOnError: true, + * selector: '0x12345678' + * }) + * console.log(isSupported) // true or false + */ +export async function supportsExecutionMode< + TSmartAccount extends SmartAccount | undefined, + callType extends CallType = CallType +>( + client: Client, + args: SupportsExecutionModeParameters +): Promise { + const { + account: account_ = client.account, + type, + revertOnError, + selector, + context + } = args + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + const publicClient = account.client + + const encodedMode = encodeExecutionMode({ + type, + revertOnError, + selector, + context + }) + + const abi = [ + { + name: "supportsExecutionMode", + type: "function", + stateMutability: "view", + inputs: [ + { + type: "bytes32", + name: "encodedMode" + } + ], + outputs: [ + { + type: "bool" + } + ] + } + ] as const + + try { + return await getAction( + publicClient, + readContract, + "readContract" + )({ + abi, + functionName: "supportsExecutionMode", + args: [encodedMode], + address: account.address + }) + } catch (error) { + if (error instanceof ContractFunctionExecutionError) { + const { factory, factoryData } = await account.getFactoryArgs() + + const result = await getAction( + publicClient, + call, + "call" + )({ + factory: factory, + factoryData: factoryData, + to: account.address, + data: encodeFunctionData({ + abi, + functionName: "supportsExecutionMode", + args: [encodedMode] + }) + }) + + if (!result || !result.data) { + throw new Error("accountId result is empty") + } + + return decodeFunctionResult({ + abi, + functionName: "supportsExecutionMode", + data: result.data + }) + } + + throw error + } +} diff --git a/src/sdk/clients/decorators/erc7579/supportsModule.ts b/src/sdk/clients/decorators/erc7579/supportsModule.ts new file mode 100644 index 000000000..cf7da1cfa --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/supportsModule.ts @@ -0,0 +1,143 @@ +import { + type Chain, + type Client, + ContractFunctionExecutionError, + type Transport, + decodeFunctionResult, + encodeFunctionData +} from "viem" +import type { + GetSmartAccountParameter, + SmartAccount +} from "viem/account-abstraction" +import { call, readContract } from "viem/actions" +import { getAction } from "viem/utils" +import { parseAccount } from "viem/utils" +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" +import type { ModuleType } from "../../../modules/utils/Types" + +export type SupportsModuleParameters< + TSmartAccount extends SmartAccount | undefined +> = GetSmartAccountParameter & { + type: ModuleType +} + +/** + * Parses a module type to its corresponding ID. + * + * @param type - The module type to parse. + * @returns The corresponding bigint ID for the module type. + * @throws {Error} If an invalid module type is provided. + */ +export function parseModuleTypeId(type: ModuleType): bigint { + switch (type) { + case "validator": + return BigInt(1) + case "executor": + return BigInt(2) + case "fallback": + return BigInt(3) + case "hook": + return BigInt(4) + default: + throw new Error("Invalid module type") + } +} + +/** + * Checks if a smart account supports a specific module type. + * + * @param client - The client instance. + * @param args - Parameters including the smart account and module type to check. + * @returns A boolean indicating whether the module type is supported. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { supportsModule } from '@biconomy/sdk' + * + * const isSupported = await supportsModule(nexusClient, { + * type: 'executor' + * }) + * console.log(isSupported) // true or false + */ +export async function supportsModule< + TSmartAccount extends SmartAccount | undefined +>( + client: Client, + args: SupportsModuleParameters +): Promise { + const { account: account_ = client.account } = args + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + const publicClient = account.client + + const abi = [ + { + name: "supportsModule", + type: "function", + stateMutability: "view", + inputs: [ + { + type: "uint256", + name: "moduleTypeId" + } + ], + outputs: [ + { + type: "bool" + } + ] + } + ] as const + + try { + return await getAction( + publicClient, + readContract, + "readContract" + )({ + abi, + functionName: "supportsModule", + args: [parseModuleTypeId(args.type)], + address: account.address + }) + } catch (error) { + if (error instanceof ContractFunctionExecutionError) { + const { factory, factoryData } = await account.getFactoryArgs() + + const result = await getAction( + publicClient, + call, + "call" + )({ + factory: factory, + factoryData: factoryData, + to: account.address, + data: encodeFunctionData({ + abi, + functionName: "supportsModule", + args: [parseModuleTypeId(args.type)] + }) + }) + + if (!result || !result.data) { + throw new Error("accountId result is empty") + } + + return decodeFunctionResult({ + abi, + functionName: "supportsModule", + data: result.data + }) + } + + throw error + } +} diff --git a/src/sdk/clients/decorators/erc7579/uninstallFallback.ts b/src/sdk/clients/decorators/erc7579/uninstallFallback.ts new file mode 100644 index 000000000..7a4b6dc37 --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/uninstallFallback.ts @@ -0,0 +1,113 @@ +import { + type Chain, + type Client, + type Hex, + type Transport, + encodeFunctionData, + getAddress +} from "viem" +import { + type GetSmartAccountParameter, + type SmartAccount, + sendUserOperation +} from "viem/account-abstraction" +import { getAction } from "viem/utils" +import { parseAccount } from "viem/utils" +import type { Module } from "." +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" +import { parseModuleTypeId } from "./supportsModule" + +export type UninstallFallbackParameters< + TSmartAccount extends SmartAccount | undefined +> = GetSmartAccountParameter & { + module: Module + maxFeePerGas?: bigint + maxPriorityFeePerGas?: bigint + nonce?: bigint +} + +/** + * Uninstalls a fallback module from a smart account. + * + * @param client - The client instance. + * @param parameters - Parameters including the smart account, module to uninstall, and optional gas settings. + * @returns The hash of the user operation as a hexadecimal string. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { uninstallFallback } from '@biconomy/sdk' + * + * const userOpHash = await uninstallFallback(nexusClient, { + * module: { + * type: 'fallback', + * address: '0x...', + * context: '0x' + * } + * }) + * console.log(userOpHash) // '0x...' + */ +export async function uninstallFallback< + TSmartAccount extends SmartAccount | undefined +>( + client: Client, + parameters: UninstallFallbackParameters +): Promise { + const { + account: account_ = client.account, + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + module: { address, context, type } + } = parameters + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + return getAction( + client, + sendUserOperation, + "sendUserOperation" + )({ + calls: [ + { + to: account.address, + value: BigInt(0), + data: encodeFunctionData({ + abi: [ + { + name: "uninstallFallback", + type: "function", + stateMutability: "nonpayable", + inputs: [ + { + type: "uint256", + name: "moduleTypeId" + }, + { + type: "address", + name: "module" + }, + { + type: "bytes", + name: "deInitData" + } + ], + outputs: [] + } + ], + functionName: "uninstallFallback", + args: [parseModuleTypeId(type), getAddress(address), context] + }) + } + ], + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + account: account + }) +} diff --git a/src/sdk/clients/decorators/erc7579/uninstallModule.ts b/src/sdk/clients/decorators/erc7579/uninstallModule.ts new file mode 100644 index 000000000..03f29878f --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/uninstallModule.ts @@ -0,0 +1,113 @@ +import { + type Chain, + type Client, + type Hex, + type Transport, + encodeFunctionData, + getAddress +} from "viem" +import { + type GetSmartAccountParameter, + type SmartAccount, + sendUserOperation +} from "viem/account-abstraction" +import { getAction } from "viem/utils" +import { parseAccount } from "viem/utils" +import type { Module } from "." +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" +import { parseModuleTypeId } from "./supportsModule" + +export type UninstallModuleParameters< + TSmartAccount extends SmartAccount | undefined +> = GetSmartAccountParameter & { + module: Module + maxFeePerGas?: bigint + maxPriorityFeePerGas?: bigint + nonce?: bigint +} + +/** + * Uninstalls a module from a smart account. + * + * @param client - The client instance. + * @param parameters - Parameters including the smart account, module to uninstall, and optional gas settings. + * @returns The hash of the user operation as a hexadecimal string. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { uninstallModule } from '@biconomy/sdk' + * + * const userOpHash = await uninstallModule(nexusClient, { + * module: { + * type: 'executor', + * address: '0x...', + * context: '0x' + * } + * }) + * console.log(userOpHash) // '0x...' + */ +export async function uninstallModule< + TSmartAccount extends SmartAccount | undefined +>( + client: Client, + parameters: UninstallModuleParameters +): Promise { + const { + account: account_ = client.account, + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + module: { address, context, type } + } = parameters + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + return getAction( + client, + sendUserOperation, + "sendUserOperation" + )({ + calls: [ + { + to: account.address, + value: BigInt(0), + data: encodeFunctionData({ + abi: [ + { + name: "uninstallModule", + type: "function", + stateMutability: "nonpayable", + inputs: [ + { + type: "uint256", + name: "moduleTypeId" + }, + { + type: "address", + name: "module" + }, + { + type: "bytes", + name: "deInitData" + } + ], + outputs: [] + } + ], + functionName: "uninstallModule", + args: [parseModuleTypeId(type), getAddress(address), context] + }) + } + ], + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + account: account + }) +} diff --git a/src/sdk/clients/decorators/erc7579/uninstallModules.ts b/src/sdk/clients/decorators/erc7579/uninstallModules.ts new file mode 100644 index 000000000..0c28dd4de --- /dev/null +++ b/src/sdk/clients/decorators/erc7579/uninstallModules.ts @@ -0,0 +1,110 @@ +import { + type Chain, + type Client, + type Hex, + type Transport, + encodeFunctionData, + getAddress +} from "viem" +import { + type GetSmartAccountParameter, + type SmartAccount, + sendUserOperation +} from "viem/account-abstraction" +import { getAction } from "viem/utils" +import { parseAccount } from "viem/utils" +import type { Module } from "." +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" +import { parseModuleTypeId } from "./supportsModule" + +export type UninstallModulesParameters< + TSmartAccount extends SmartAccount | undefined +> = GetSmartAccountParameter & { + modules: Module[] + maxFeePerGas?: bigint + maxPriorityFeePerGas?: bigint + nonce?: bigint +} + +/** + * Uninstalls multiple modules from a smart account. + * + * @param client - The client instance. + * @param parameters - Parameters including the smart account, modules to uninstall, and optional gas settings. + * @returns The hash of the user operation as a hexadecimal string. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { uninstallModules } from '@biconomy/sdk' + * + * const userOpHash = await uninstallModules(nexusClient, { + * modules: [ + * { type: 'executor', address: '0x...', context: '0x' }, + * { type: 'validator', address: '0x...', context: '0x' } + * ] + * }) + * console.log(userOpHash) // '0x...' + */ +export async function uninstallModules< + TSmartAccount extends SmartAccount | undefined +>( + client: Client, + parameters: UninstallModulesParameters +): Promise { + const { + account: account_ = client.account, + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + modules + } = parameters + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + return getAction( + client, + sendUserOperation, + "sendUserOperation" + )({ + calls: modules.map(({ type, address, context }) => ({ + to: account.address, + value: BigInt(0), + data: encodeFunctionData({ + abi: [ + { + name: "uninstallModule", + type: "function", + stateMutability: "nonpayable", + inputs: [ + { + type: "uint256", + name: "moduleTypeId" + }, + { + type: "address", + name: "module" + }, + { + type: "bytes", + name: "deInitData" + } + ], + outputs: [] + } + ], + functionName: "uninstallModule", + args: [parseModuleTypeId(type), getAddress(address), context] + }) + })), + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + account + }) +} diff --git a/src/sdk/clients/decorators/smartAccount/account.decorators.test.ts b/src/sdk/clients/decorators/smartAccount/account.decorators.test.ts new file mode 100644 index 000000000..7dfa9c8d8 --- /dev/null +++ b/src/sdk/clients/decorators/smartAccount/account.decorators.test.ts @@ -0,0 +1,139 @@ +import { http, type Account, type Address, type Chain, isHex } from "viem" +import { afterAll, beforeAll, describe, expect, test } from "vitest" +import { CounterAbi } from "../../../../test/__contracts/abi" +import { mockAddresses } from "../../../../test/__contracts/mockAddresses" +import { toNetwork } from "../../../../test/testSetup" +import { + type MasterClient, + type NetworkConfig, + fundAndDeployClients, + getBalance, + getTestAccount, + killNetwork, + toTestClient +} from "../../../../test/testUtils" +import { type NexusClient, createNexusClient } from "../../createNexusClient" + +describe("account.decorators", async () => { + let network: NetworkConfig + let chain: Chain + let bundlerUrl: string + + // Test utils + let testClient: MasterClient + let account: Account + let nexusClient: NexusClient + let nexusAccountAddress: Address + let recipient: Account + let recipientAddress: Address + + beforeAll(async () => { + network = await toNetwork() + + chain = network.chain + bundlerUrl = network.bundlerUrl + account = getTestAccount(0) + recipient = getTestAccount(1) + recipientAddress = recipient.address + testClient = toTestClient(chain, getTestAccount(5)) + + nexusClient = await createNexusClient({ + holder: account, + chain, + transport: http(), + bundlerTransport: http(bundlerUrl) + }) + + nexusAccountAddress = await nexusClient.account.getCounterFactualAddress() + await fundAndDeployClients(testClient, [nexusClient]) + }) + + afterAll(async () => { + await killNetwork([network?.rpcPort, network?.bundlerPort]) + }) + + test.concurrent("should sign a message", async () => { + const signedMessage = await nexusClient.signMessage({ message: "hello" }) + + expect(signedMessage).toEqual( + "0x6854688d3d9a87a33addd5f4deb5cea1b97fa5b7f16ea9a3478698f695fd1401bfe27e9e4a7e8e3da94aa72b021125e31fa899cc573c48ea3fe1d4ab61a9db10c19032026e3ed2dbccba5a178235ac27f94504311c" + ) + }) + + test.concurrent("should currently fail to sign with typed data", async () => { + expect( + nexusClient.signTypedData({ + domain: { + name: "Ether Mail", + version: "1", + chainId: 1, + verifyingContract: "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" + }, + types: { + Person: [ + { name: "name", type: "string" }, + { name: "wallet", type: "address" } + ], + Mail: [ + { name: "from", type: "Person" }, + { name: "to", type: "Person" }, + { name: "contents", type: "string" } + ] + }, + primaryType: "Mail", + message: { + from: { + name: "Cow", + wallet: "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826" + }, + to: { + name: "Bob", + wallet: "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB" + }, + contents: "Hello, Bob!" + } + }) + ).rejects.toThrow() + }) + + test("should send a user operation using sendTransaction", async () => { + const balanceBefore = await getBalance(testClient, recipientAddress) + const hash = await nexusClient.sendTransaction({ + calls: [ + { + to: recipientAddress, + value: 1n + } + ] + }) + const { status } = await testClient.waitForTransactionReceipt({ hash }) + const balanceAfter = await getBalance(testClient, recipientAddress) + expect(status).toBe("success") + expect(balanceAfter - balanceBefore).toBe(1n) + }) + + test("should write to a contract", async () => { + const counterValueBefore = await testClient.readContract({ + abi: CounterAbi, + functionName: "getNumber", + address: mockAddresses.Counter + }) + + expect(counterValueBefore).toBe(0n) + const hash = await nexusClient.writeContract({ + abi: CounterAbi, + functionName: "incrementNumber", + address: mockAddresses.Counter, + chain + }) + const { status } = await testClient.waitForTransactionReceipt({ hash }) + const counterValueAfter = await testClient.readContract({ + abi: CounterAbi, + functionName: "getNumber", + address: mockAddresses.Counter + }) + + expect(status).toBe("success") + expect(counterValueAfter).toBe(1n) + }) +}) diff --git a/src/client/decorators/smartAccount.ts b/src/sdk/clients/decorators/smartAccount/index.ts similarity index 54% rename from src/client/decorators/smartAccount.ts rename to src/sdk/clients/decorators/smartAccount/index.ts index a963b3738..d0bbb611d 100644 --- a/src/client/decorators/smartAccount.ts +++ b/src/sdk/clients/decorators/smartAccount/index.ts @@ -1,42 +1,20 @@ import type { + Abi, Chain, Client, - DeployContractParameters, + ContractFunctionArgs, + ContractFunctionName, Hash, SendTransactionParameters, - SendTransactionReturnType, - SignMessageParameters, - SignMessageReturnType, - SignTypedDataParameters, - SignTypedDataReturnType, Transport, TypedData, - WriteContractParameters, - WriteContractReturnType + WriteContractParameters } from "viem" -// import { signTypedData } from "../../accounts/actions/sygnTypedData" -import type { Prettify } from "viem/chains" -import { prepareUserOperationRequest } from "../../accounts/actions/prepareUserOperationRequest" -import { - type SendTransactionWithPaymasterParameters, - sendTransaction -} from "../../accounts/actions/sendTransaction" -import { - type SendTransactionsWithPaymasterParameters, - sendTransactions -} from "../../accounts/actions/sendTransactions" -import { - type SendUserOperationParameters, - sendUserOperation -} from "../../accounts/actions/sendUserOperation" -import { signMessage } from "../../accounts/actions/signMessage" -import { signTypedData } from "../../accounts/actions/signTypedData" -import type { - Middleware, - SmartAccount, - UserOperationStruct -} from "../../accounts/utils/types" -import type { StateOverrides } from "../../bundler/utils/types" +import type { SmartAccount } from "viem/account-abstraction" +import { sendTransaction } from "./sendTransaction" +import { signMessage } from "./signMessage" +import { signTypedData } from "./signTypedData" +import { writeContract } from "./writeContract" export type SmartAccountActions< TChain extends Chain | undefined = Chain | undefined, @@ -85,8 +63,20 @@ export type SmartAccountActions< * value: 1000000000000000000n, * }) */ - sendTransaction: ( - args: SendTransactionParameters + sendTransaction: < + TChainOverride extends Chain | undefined = undefined, + accountOverride extends SmartAccount | undefined = undefined, + calls extends readonly unknown[] = readonly unknown[] + >( + args: Parameters< + typeof sendTransaction< + TSmartAccount, + TChain, + accountOverride, + TChainOverride, + calls + > + >[1] ) => Promise /** * Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))`. @@ -132,8 +122,8 @@ export type SmartAccountActions< * }) */ signMessage: ( - args: Parameters>[1] - ) => ReturnType> + args: Parameters>[1] + ) => ReturnType> /** * Signs typed data and calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))`. * @@ -235,50 +225,9 @@ export type SmartAccountActions< TPrimaryType extends string >( args: Parameters< - typeof signTypedData + typeof signTypedData >[1] - ) => ReturnType< - typeof signTypedData - > - /** - * Deploys a contract to the network, given bytecode and constructor arguments. - * This function also allows you to sponsor this transaction if sender is a smartAccount - * - * - Docs: https://viem.sh/docs/contract/deployContract.html - * - Examples: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/contracts/deploying-contracts - * - * @param args - {@link DeployContractParameters} - * @returns The [Transaction](https://viem.sh/docs/glossary/terms.html#transaction) hash. {@link DeployContractReturnType} - * - * @example - * import { createWalletClient, http } from 'viem' - * import { privateKeyToAccount } from 'viem/accounts' - * import { mainnet } from 'viem/chains' - * - * const client = createWalletClient({ - * account: privateKeyToAccount('0xโ€ฆ'), - * chain: mainnet, - * transport: http(), - * }) - * const hash = await client.deployContract({ - * abi: [], - * account: '0xโ€ฆ, - * bytecode: '0x608060405260405161083e38038061083e833981016040819052610...', - * }) - */ - // deployContract: < - // const TAbi extends Abi | readonly unknown[], - // TChainOverride extends Chain | undefined = undefined - // >( - // args: Prettify< - // DeployContractParameters< - // TAbi, - // TChain, - // TSmartAccount, - // TChainOverride - // > - // > - // ) => ReturnType> + ) => ReturnType> /** * Executes a write function on a contract. * This function also allows you to sponsor this transaction if sender is a smartAccount @@ -327,150 +276,49 @@ export type SmartAccountActions< * } * const hash = await client.writeContract(request) */ - // writeContract: < - // const TAbi extends Abi | readonly unknown[], - // TFunctionName extends ContractFunctionName< - // TAbi, - // "nonpayable" | "payable" - // > = ContractFunctionName, - // TArgs extends ContractFunctionArgs< - // TAbi, - // "nonpayable" | "payable", - // TFunctionName - // > = ContractFunctionArgs, - // TChainOverride extends Chain | undefined = undefined - // >( - // args: WriteContractParameters< - // TAbi, - // TFunctionName, - // TArgs, - // TChain, - // TSmartAccount, - // TChainOverride - // > - // ) => ReturnType< - // typeof writeContract< - // entryPoint, - // TChain, - // TSmartAccount, - // TAbi, - // TFunctionName, - // TArgs, - // TChainOverride - // > - // > - prepareUserOperationRequest: ( - args: Prettify< - Parameters< - typeof prepareUserOperationRequest - >[1] - >, - stateOverrides?: StateOverrides - ) => Promise> - sendUserOperation: ( - args: Prettify< - Parameters>[1] + writeContract: < + const TAbi extends Abi | readonly unknown[], + TFunctionName extends ContractFunctionName< + TAbi, + "nonpayable" | "payable" + > = ContractFunctionName, + TArgs extends ContractFunctionArgs< + TAbi, + "nonpayable" | "payable", + TFunctionName + > = ContractFunctionArgs, + TChainOverride extends Chain | undefined = undefined + >( + args: WriteContractParameters< + TAbi, + TFunctionName, + TArgs, + TChain, + TSmartAccount, + TChainOverride > - ) => Promise - /** - * Creates, signs, and sends a new transaction to the network. - * This function also allows you to sponsor this transaction if sender is a smartAccount - * - * - Docs: https://viem.sh/docs/actions/wallet/sendTransaction.html - * - Examples: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/transactions/sending-transactions - * - JSON-RPC Methods: - * - JSON-RPC Accounts: [`eth_sendTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction) - * - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction) - * - * @param args - {@link SendTransactionParameters} - * @returns The [Transaction](https://viem.sh/docs/glossary/terms.html#transaction) hash. {@link SendTransactionReturnType} - * - * @example - * import { createWalletClient, custom } from 'viem' - * import { mainnet } from 'viem/chains' - * - * const client = createWalletClient({ - * chain: mainnet, - * transport: custom(window.ethereum), - * }) - * const hash = await client.sendTransaction([{ - * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', - * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', - * value: 1000000000000000000n - * }, { - * to: '0x61897970c51812dc3a010c7d01b50e0d17dc1234', - * value: 10000000000000000n - * }) - * - * @example - * // Account Hoisting - * import { createWalletClient, http } from 'viem' - * import { privateKeyToAccount } from 'viem/accounts' - * import { mainnet } from 'viem/chains' - * - * const client = createWalletClient({ - * account: privateKeyToAccount('0xโ€ฆ'), - * chain: mainnet, - * transport: http(), - * }) - * const hash = await client.sendTransaction([{ - * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', - * value: 1000000000000000000n - * }, { - * to: '0x61897970c51812dc3a010c7d01b50e0d17dc1234', - * value: 10000000000000000n - * }]) - */ - sendTransactions: ( - args: Prettify> - ) => ReturnType> + ) => ReturnType< + typeof writeContract< + TChain, + TSmartAccount, + TAbi, + TFunctionName, + TArgs, + TChainOverride + > + > } -export function smartAccountActions({ middleware }: Middleware) { +export function smartAccountActions() { return < - TTransport extends Transport, TChain extends Chain | undefined = Chain | undefined, TSmartAccount extends SmartAccount | undefined = SmartAccount | undefined >( - client: Client + client: Client ): SmartAccountActions => ({ - prepareUserOperationRequest: (args, stateOverrides) => - prepareUserOperationRequest( - client, - { - ...args, - middleware - }, - stateOverrides - ), - // deployContract: (args) => - // deployContract(client, { - // ...args, - // middleware - // } as DeployContractParametersWithPaymaster), - sendTransaction: (args) => - sendTransaction(client, { - ...args, - middleware - } as SendTransactionWithPaymasterParameters), - sendTransactions: (args) => - sendTransactions(client, { - ...args, - middleware - }), - sendUserOperation: (args) => - sendUserOperation(client, { - ...args, - middleware - } as SendUserOperationParameters), - signMessage: (args) => signMessage(client, args), - signTypedData: < - const TTypedData extends TypedData | { [key: string]: unknown }, - TPrimaryType extends string - >( - args: Parameters< - typeof signTypedData - >[1] - ) => signTypedData(client, args) + sendTransaction: (args) => sendTransaction(client, args as any), + signMessage: (args) => signMessage(client, args), + signTypedData: (args) => signTypedData(client, args), + writeContract: (args) => writeContract(client, args) }) } diff --git a/src/sdk/clients/decorators/smartAccount/sendTransaction.ts b/src/sdk/clients/decorators/smartAccount/sendTransaction.ts new file mode 100644 index 000000000..c282896dc --- /dev/null +++ b/src/sdk/clients/decorators/smartAccount/sendTransaction.ts @@ -0,0 +1,105 @@ +import type { + Chain, + Client, + Hash, + SendTransactionParameters, + Transport +} from "viem" +import { + type SendUserOperationParameters, + type SmartAccount, + sendUserOperation, + waitForUserOperationReceipt +} from "viem/account-abstraction" +import { getAction, parseAccount } from "viem/utils" +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" + +/** + * Creates, signs, and sends a new transaction to the network using a smart account. + * This function also allows you to sponsor this transaction if the sender is a smart account. + * + * @param client - The client instance. + * @param args - Parameters for sending the transaction or user operation. + * @returns The transaction hash as a hexadecimal string. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { sendTransaction } from '@biconomy/sdk' + * + * const hash = await sendTransaction(nexusClient, { + * to: '0x...', + * value: parseEther('0.1'), + * data: '0x...' + * }) + * console.log(hash) // '0x...' + */ +export async function sendTransaction< + account extends SmartAccount | undefined, + chain extends Chain | undefined, + accountOverride extends SmartAccount | undefined = undefined, + chainOverride extends Chain | undefined = Chain | undefined, + calls extends readonly unknown[] = readonly unknown[] +>( + client: Client, + args: + | SendTransactionParameters + | SendUserOperationParameters +): Promise { + let userOpHash: Hash + + if ("to" in args) { + const { + account: account_ = client.account, + data, + maxFeePerGas, + maxPriorityFeePerGas, + to, + value, + nonce + } = args + + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/sendTransaction" + }) + } + + const account = parseAccount(account_) as SmartAccount + + if (!to) throw new Error("Missing to address") + + userOpHash = await getAction( + client, + sendUserOperation, + "sendUserOperation" + )({ + calls: [ + { + to, + value: value || BigInt(0), + data: data || "0x" + } + ], + account, + maxFeePerGas, + maxPriorityFeePerGas, + nonce: nonce ? BigInt(nonce) : undefined + }) + } else { + userOpHash = await getAction( + client, + sendUserOperation, + "sendUserOperation" + )({ ...args } as SendUserOperationParameters) + } + + const userOperationReceipt = await getAction( + client, + waitForUserOperationReceipt, + "waitForUserOperationReceipt" + )({ + hash: userOpHash + }) + + return userOperationReceipt?.receipt.transactionHash +} diff --git a/src/sdk/clients/decorators/smartAccount/signMessage.ts b/src/sdk/clients/decorators/smartAccount/signMessage.ts new file mode 100644 index 000000000..bf5ebb556 --- /dev/null +++ b/src/sdk/clients/decorators/smartAccount/signMessage.ts @@ -0,0 +1,46 @@ +import type { + Chain, + Client, + SignMessageParameters, + SignMessageReturnType, + Transport +} from "viem" +import type { SmartAccount } from "viem/account-abstraction" +import { parseAccount } from "viem/utils" +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" + +/** + * Signs a message using the smart account. + * + * This function calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): + * `keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))`. + * + * @param client - The client instance. + * @param parameters - Parameters for signing the message. + * @returns The signature as a hexadecimal string. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { signMessage } from '@biconomy/sdk' + * + * const signature = await signMessage(nexusClient, { + * message: 'Hello, Biconomy!' + * }) + * console.log(signature) // '0x...' + */ +export async function signMessage( + client: Client, + { + account: account_ = client.account, + message + }: SignMessageParameters +): Promise { + if (!account_) + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/signMessage" + }) + + const account = parseAccount(account_) as SmartAccount + + return account.signMessage({ message }) +} diff --git a/src/sdk/clients/decorators/smartAccount/signTypedData.ts b/src/sdk/clients/decorators/smartAccount/signTypedData.ts new file mode 100644 index 000000000..b4db03271 --- /dev/null +++ b/src/sdk/clients/decorators/smartAccount/signTypedData.ts @@ -0,0 +1,113 @@ +import { + type Chain, + type Client, + type SignTypedDataParameters, + type SignTypedDataReturnType, + type Transport, + type TypedData, + type TypedDataDefinition, + type TypedDataDomain, + getTypesForEIP712Domain, + validateTypedData +} from "viem" +import type { SmartAccount } from "viem/account-abstraction" +import { parseAccount } from "viem/utils" +import { AccountNotFoundError } from "../../../account/utils/AccountNotFound" + +/** + * Signs typed data using the smart account. + * + * This function calculates an Ethereum-specific signature in [EIP-712 format](https://eips.ethereum.org/EIPS/eip-712): + * `sign(keccak256("\x19\x01" โ€– domainSeparator โ€– hashStruct(message)))` + * + * @param client - The client instance. + * @param parameters - Parameters for signing the typed data. + * @returns The signature as a hexadecimal string. + * @throws {AccountNotFoundError} If the account is not found. + * + * @example + * import { signTypedData } from '@biconomy/sdk' + * import { keccak256, encodeAbiParameters, parseAbiParameters } from 'viem' + * + * const domain = { + * name: 'Ether Mail', + * version: '1', + * chainId: 1, + * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC' + * } + * + * const types = { + * Person: [ + * { name: 'name', type: 'string' }, + * { name: 'wallet', type: 'address' } + * ], + * Mail: [ + * { name: 'from', type: 'Person' }, + * { name: 'to', type: 'Person' }, + * { name: 'contents', type: 'string' } + * ] + * } + * + * const message = { + * from: { + * name: 'Cow', + * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826' + * }, + * to: { + * name: 'Bob', + * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB' + * }, + * contents: 'Hello, Bob!' + * } + * + * const signature = await signTypedData(nexusClient, { + * domain, + * types, + * primaryType: 'Mail', + * message + * }) + * console.log(signature) // '0x...' + */ +export async function signTypedData< + const TTypedData extends TypedData | { [key: string]: unknown }, + TPrimaryType extends string, + TAccount extends SmartAccount | undefined = SmartAccount | undefined +>( + client: Client, + { + account: account_ = client.account, + domain, + message, + primaryType, + types: types_ + }: SignTypedDataParameters +): Promise { + if (!account_) { + throw new AccountNotFoundError({ + docsPath: "/docs/actions/wallet/signMessage" + }) + } + + const account = parseAccount(account_) as SmartAccount + + const types = { + EIP712Domain: getTypesForEIP712Domain({ domain } as { + domain: TypedDataDomain + }), + ...(types_ as TTypedData) + } + + validateTypedData({ + domain, + message, + primaryType, + types + } as TypedDataDefinition) + + return account.signTypedData({ + domain, + primaryType, + types, + message + } as TypedDataDefinition) +} diff --git a/src/sdk/clients/decorators/smartAccount/writeContract.ts b/src/sdk/clients/decorators/smartAccount/writeContract.ts new file mode 100644 index 000000000..10470875b --- /dev/null +++ b/src/sdk/clients/decorators/smartAccount/writeContract.ts @@ -0,0 +1,93 @@ +import { + type Abi, + type Chain, + type Client, + type ContractFunctionArgs, + type ContractFunctionName, + type EncodeFunctionDataParameters, + type Hash, + type SendTransactionParameters, + type Transport, + type WriteContractParameters, + encodeFunctionData +} from "viem" +import type { SmartAccount } from "viem/account-abstraction" +import { getAction } from "viem/utils" +import { sendTransaction } from "./sendTransaction" + +/** + * Executes a write operation on a smart contract using a smart account. + * + * @param client - The client instance. + * @param parameters - Parameters for the contract write operation. + * @returns The transaction hash as a hexadecimal string. + * @throws {Error} If the 'to' address is missing in the request. + * + * @example + * import { writeContract } from '@biconomy/sdk' + * import { encodeFunctionData } from 'viem' + * + * const encodedCall = encodeFunctionData({ + * abi: CounterAbi, + * functionName: "incrementNumber" + * }) + * const call = { + * to: '0x61f70428b61864B38D9B45b7B032c700B960acCD', + * data: encodedCall + * } + * const hash = await writeContract(nexusClient, call) + * console.log(hash) // '0x...' + */ +export async function writeContract< + TChain extends Chain | undefined, + TAccount extends SmartAccount | undefined, + const TAbi extends Abi | readonly unknown[], + TFunctionName extends ContractFunctionName< + TAbi, + "nonpayable" | "payable" + > = ContractFunctionName, + TArgs extends ContractFunctionArgs< + TAbi, + "nonpayable" | "payable", + TFunctionName + > = ContractFunctionArgs, + TChainOverride extends Chain | undefined = undefined +>( + client: Client, + { + abi, + address, + args, + dataSuffix, + functionName, + ...request + }: WriteContractParameters< + TAbi, + TFunctionName, + TArgs, + TChain, + TAccount, + TChainOverride + > +): Promise { + const data = encodeFunctionData({ + abi, + args, + functionName + } as EncodeFunctionDataParameters) + + const hash = await getAction( + client, + sendTransaction, + "sendTransaction" + )({ + data: `${data}${dataSuffix ? dataSuffix.replace("0x", "") : ""}`, + to: address, + ...request + } as unknown as SendTransactionParameters< + Chain | undefined, + TAccount, + undefined + >) + return hash +} diff --git a/src/sdk/clients/index.ts b/src/sdk/clients/index.ts new file mode 100644 index 000000000..46973e1a4 --- /dev/null +++ b/src/sdk/clients/index.ts @@ -0,0 +1,5 @@ +export * from "./createBicoBundlerClient" +export * from "./createBicoPaymasterClient" +export * from "./createNexusClient" +export * from "./decorators/erc7579" +export * from "./decorators/smartAccount" diff --git a/src/sdk/index.ts b/src/sdk/index.ts new file mode 100644 index 000000000..e5e14f2cb --- /dev/null +++ b/src/sdk/index.ts @@ -0,0 +1,3 @@ +export * from "./account" +export * from "./modules" +export * from "./clients" diff --git a/src/sdk/modules/base/BaseExecutionModule.ts b/src/sdk/modules/base/BaseExecutionModule.ts new file mode 100644 index 000000000..678a7aa01 --- /dev/null +++ b/src/sdk/modules/base/BaseExecutionModule.ts @@ -0,0 +1,10 @@ +import type { Address, Hash } from "viem" +import type { Execution } from "../utils/Types.js" +import { BaseModule } from "./BaseModule.js" + +export abstract class BaseExecutionModule extends BaseModule { + abstract execute( + execution: Execution | Execution[], + ownedAccountAddress?: Address + ): Promise +} diff --git a/src/sdk/modules/base/BaseModule.ts b/src/sdk/modules/base/BaseModule.ts new file mode 100644 index 000000000..7b6e9d216 --- /dev/null +++ b/src/sdk/modules/base/BaseModule.ts @@ -0,0 +1,106 @@ +import { type Address, type Hex, encodeFunctionData, parseAbi } from "viem" +import contracts from "../../__contracts/index.js" +import type { Holder } from "../../account/utils/toHolder.js" +import type { Module } from "../../clients/decorators/erc7579/index.js" +import { + type ModuleType, + type ModuleVersion, + moduleTypeIds +} from "../utils/Types.js" + +export abstract class BaseModule { + address: Address + context: Hex + additionalContext: Hex + type: ModuleType + hook?: Address + version: ModuleVersion = "1.0.0-beta" + entryPoint: Address = contracts.entryPoint.address + holder: Holder + + constructor(module: Module, holder: Holder) { + this.address = module.address + this.context = module.context ?? "0x" + this.additionalContext = module.additionalContext ?? "0x" + this.hook = module.hook + this.type = module.type + this.holder = holder + } + + public installModule(): Hex { + const installModuleData = encodeFunctionData({ + abi: parseAbi([ + "function installModule(uint256 moduleTypeId, address module, bytes calldata initData) external" + ]), + functionName: "installModule", + args: [ + BigInt(moduleTypeIds[this.type]), + this.address, + this.context ?? "0x" + ] + }) + + return installModuleData + } + + public uninstallModule(uninstallData?: Hex): Hex { + const uninstallModuleData = encodeFunctionData({ + abi: parseAbi([ + "function uninstallModule(uint256 moduleTypeId, address module, bytes calldata initData) external" + ]), + functionName: "uninstallModule", + args: [ + BigInt(moduleTypeIds[this.type]), + this.address, + uninstallData ?? "0x" + ] + }) + return uninstallModuleData + } + + /** + * Determines if the module matches a specific module type. + * @dev Should return true if the module corresponds to the type ID, false otherwise. + * @param moduleTypeId Numeric ID of the module type as per ERC-7579 specifications. + * @returns True if the module is of the specified type, false otherwise. + */ + public isModuleType(moduleTypeId: bigint): Hex { + const isModuleTypeData = encodeFunctionData({ + abi: parseAbi([ + "function isModuleType(uint256 moduleTypeId) external view returns (bool)" + ]), + functionName: "isModuleType", + args: [moduleTypeId] + }) + return isModuleTypeData + } + + /** + * Checks if the module has been initialized for a specific smart account. + * @dev Returns true if initialized, false otherwise. + * @param smartAccount Address of the smart account to check for initialization status. + * @returns True if the module is initialized for the given smart account, false otherwise. + */ + public isInitialized(smartAccount: Address): Hex { + const isInitializedeData = encodeFunctionData({ + abi: parseAbi([ + "function isInitialized(address smartAccount) external view returns (bool)" + ]), + functionName: "isInitialized", + args: [smartAccount] + }) + return isInitializedeData + } + + public getAddress(): Hex { + return this.address + } + + public getVersion(): string { + return this.version + } + + public getEntryPoint(): string { + return this.version + } +} diff --git a/src/sdk/modules/base/BaseValidationModule.ts b/src/sdk/modules/base/BaseValidationModule.ts new file mode 100644 index 000000000..6bc74508d --- /dev/null +++ b/src/sdk/modules/base/BaseValidationModule.ts @@ -0,0 +1,65 @@ +import { type Hex, getAddress } from "viem" +import type { Holder } from "../../account/utils/toHolder.js" +import { BaseModule } from "./BaseModule.js" + +export abstract class BaseValidationModule extends BaseModule { + public getHolder(): Holder { + return this.holder + } + + getDummySignature(): Hex { + const moduleAddress = getAddress(this.getAddress()) + const dynamicPart = moduleAddress.substring(2).padEnd(40, "0") + return `0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000${dynamicPart}000000000000000000000000000000000000000000000000000000000000004181d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b00000000000000000000000000000000000000000000000000000000000000` + } + + // TODO: To be implemented + async getInitData(): Promise { + return "0x" + } + + async signUserOpHash(userOpHash: string): Promise { + const signature = await this.holder.signMessage({ + message: { raw: userOpHash as Hex } + }) + return signature as Hex + } + + async signMessageHolder( + _message: string | Uint8Array, + holder: Holder + ): Promise { + const message = typeof _message === "string" ? _message : { raw: _message } + let signature: `0x${string}` = await holder.signMessage({ message }) + + const potentiallyIncorrectV = Number.parseInt(signature.slice(-2), 16) + if (![27, 28].includes(potentiallyIncorrectV)) { + const correctV = potentiallyIncorrectV + 27 + signature = `0x${signature.slice(0, -2) + correctV.toString(16)}` + } + + return signature + } + + /** + * Signs a message using the appropriate method based on the type of holder. + * + * @param {Uint8Array | string} message - The message to be signed. + * @returns {Promise} A promise resolving to the signature or error message. + * @throws {Error} If the holder type is invalid or unsupported. + */ + async signMessage(_message: Uint8Array | string): Promise { + const message = typeof _message === "string" ? _message : { raw: _message } + let signature = await this.holder.signMessage({ message }) + + const potentiallyIncorrectV = Number.parseInt(signature.slice(-2), 16) + if (![27, 28].includes(potentiallyIncorrectV)) { + const correctV = potentiallyIncorrectV + 27 + signature = signature.slice(0, -2) + correctV.toString(16) + } + if (signature.slice(0, 2) !== "0x") { + signature = `0x${signature}` + } + return signature as Hex + } +} diff --git a/src/sdk/modules/executors/OwnableExecutor.ts b/src/sdk/modules/executors/OwnableExecutor.ts new file mode 100644 index 000000000..fd9b94d9e --- /dev/null +++ b/src/sdk/modules/executors/OwnableExecutor.ts @@ -0,0 +1,198 @@ +import { + type Account, + type Address, + type Chain, + type Hash, + type Hex, + type PublicClient, + type Transport, + type WalletClient, + encodeAbiParameters, + encodeFunctionData, + encodePacked, + getAddress, + parseAbi +} from "viem" +import { SENTINEL_ADDRESS } from "../../account/utils/Constants" +import { type Holder, toHolder } from "../../account/utils/toHolder" +import type { NexusClient } from "../../clients/createNexusClient" +import type { Module } from "../../clients/decorators/erc7579" +import { BaseExecutionModule } from "../base/BaseExecutionModule" +import type { Execution } from "../utils/Types" +export class OwnableExecutorModule extends BaseExecutionModule { + public nexusClient: NexusClient + public owners: Address[] + public override address: Address + + public constructor( + module: Module, + nexusClient: NexusClient, + owners: Address[], + address: Address, + holder: Holder + ) { + super(module, holder) + this.nexusClient = nexusClient + this.owners = owners + this.context = module.context ?? "0x" + this.address = address + } + + public static async create( + nexusClient: NexusClient, + address: Address, + context?: Hex + ): Promise { + const module: Module = { + address: address, + type: "executor", + context: context ?? "0x", + additionalContext: "0x" + } + const owners = await ( + nexusClient.account.client as PublicClient + ).readContract({ + address, + abi: parseAbi([ + "function getOwners(address account) external view returns (address[])" + ]), + functionName: "getOwners", + args: [await nexusClient.account.getAddress()] + }) + const holder = await toHolder({ holder: nexusClient.account.client } as { + holder: WalletClient + }) + return new OwnableExecutorModule( + module, + nexusClient, + owners as Address[], + address, + holder + ) + } + + public async execute( + execution: Execution | Execution[], + accountAddress?: Address + ): Promise { + let calldata: Hex + if (Array.isArray(execution)) { + calldata = encodeFunctionData({ + functionName: "executeBatchOnOwnedAccount", + abi: parseAbi([ + "function executeBatchOnOwnedAccount(address ownedAccount, bytes callData)" + ]), + args: [ + accountAddress ?? (await this.nexusClient.account.getAddress()), + encodeAbiParameters( + [ + { + components: [ + { + name: "target", + type: "address" + }, + { + name: "value", + type: "uint256" + }, + { + name: "callData", + type: "bytes" + } + ], + name: "Execution", + type: "tuple[]" + } + ], + [execution] + ) + ] + }) + } else { + calldata = encodeFunctionData({ + functionName: "executeOnOwnedAccount", + abi: parseAbi([ + "function executeOnOwnedAccount(address ownedAccount, bytes callData)" + ]), + args: [ + accountAddress ?? (await this.nexusClient.account.getAddress()), + encodePacked( + ["address", "uint256", "bytes"], + [ + execution.target, + BigInt(Number(execution.value)), + execution.callData + ] + ) + ] + }) + } + return this.nexusClient.sendTransaction({ + calls: [{ to: this.address, data: calldata, value: 0n }] + }) + } + + public async addOwner(newOwner: Address) { + const callData = encodeFunctionData({ + functionName: "addOwner", + abi: parseAbi(["function addOwner(address owner)"]), + args: [newOwner] + }) + return this.nexusClient.sendTransaction({ + calls: [{ to: this.address, data: callData, value: 0n }] + }) + } + + public async removeOwner(ownerToRemove: Address) { + const owners = await this.getOwners(this.address) + let prevOwner: Address + + const currentOwnerIndex = owners.findIndex( + (o: Address) => o === ownerToRemove + ) + + if (currentOwnerIndex === -1) { + throw new Error("Owner not found") + } + if (currentOwnerIndex === 0) { + prevOwner = SENTINEL_ADDRESS + } else { + prevOwner = getAddress(owners[currentOwnerIndex - 1]) + } + + const calldata = encodeFunctionData({ + functionName: "removeOwner", + abi: parseAbi(["function removeOwner(address prevOwner, address owner)"]), + args: [prevOwner, ownerToRemove] + }) + + return this.nexusClient.sendTransaction({ + calls: [ + { + to: this.address, + data: calldata, + value: 0n + } + ] + }) + } + + public async getOwners( + moduleAddress: Address, + accountAddress?: Address + ): Promise { + const owners = await ( + this.nexusClient.account.client as PublicClient + ).readContract({ + address: moduleAddress, + abi: parseAbi([ + "function getOwners(address account) external view returns (address[])" + ]), + functionName: "getOwners", + args: [accountAddress ?? (await this.nexusClient.account.getAddress())] + }) + + return owners as Address[] + } +} diff --git a/src/sdk/modules/index.ts b/src/sdk/modules/index.ts new file mode 100644 index 000000000..0883b747e --- /dev/null +++ b/src/sdk/modules/index.ts @@ -0,0 +1,14 @@ +import { OwnableExecutorModule } from "./executors/OwnableExecutor.js" +import { K1ValidatorModule } from "./validators/K1ValidatorModule.js" +// import { OwnableValidator } from "./validators/OwnableValidator.js" +import { ValidationModule } from "./validators/ValidationModule.js" + +export * from "./utils/Types.js" +export * from "./utils/Constants.js" +export * from "./utils/Helper.js" +export * from "./interfaces/IValidationModule.js" + +export const createOwnableExecutorModule = OwnableExecutorModule.create +export const createK1ValidatorModule = K1ValidatorModule.create +// export const createOwnableValidatorModule = OwnableValidator.create +export const createValidationModule = ValidationModule.create diff --git a/src/sdk/modules/interfaces/IExecutorModule.ts b/src/sdk/modules/interfaces/IExecutorModule.ts new file mode 100644 index 000000000..100710f1d --- /dev/null +++ b/src/sdk/modules/interfaces/IExecutorModule.ts @@ -0,0 +1,6 @@ +import type { Hex } from "viem" + +export interface IExecutorModule { + getAddress(): Hex + getVersion(): string +} diff --git a/src/sdk/modules/interfaces/IValidationModule.ts b/src/sdk/modules/interfaces/IValidationModule.ts new file mode 100644 index 000000000..1ab6b5c67 --- /dev/null +++ b/src/sdk/modules/interfaces/IValidationModule.ts @@ -0,0 +1,11 @@ +import type { Hex } from "viem" +import type { Holder } from "../../account/utils/toHolder" + +export interface IValidationModule { + getAddress(): Hex + getInitData(): Promise + getHolder(): Promise + signUserOpHash(_userOpHash: string): Promise + signMessage(_message: string | Uint8Array): Promise + getDummySignature(): Promise +} diff --git a/src/sdk/modules/smart.sessions.test.ts b/src/sdk/modules/smart.sessions.test.ts new file mode 100644 index 000000000..de07b3101 --- /dev/null +++ b/src/sdk/modules/smart.sessions.test.ts @@ -0,0 +1,137 @@ +import { http, type Account, type Address, type Chain, pad, toHex } from "viem" +import { afterAll, beforeAll, describe, expect, test } from "vitest" +import { parseReferenceValue } from ".." +import { TEST_CONTRACTS } from "../../test/callDatas" +import { toNetwork } from "../../test/testSetup" +import { + fundAndDeployClients, + getTestAccount, + killNetwork, + toTestClient +} from "../../test/testUtils" +import type { MasterClient, NetworkConfig } from "../../test/testUtils" +import { + type NexusClient, + createNexusClient +} from "../clients/createNexusClient" +import policies, { ParamCondition } from "./smartSessions" + +describe("smart.sessions", async () => { + let network: NetworkConfig + let chain: Chain + let bundlerUrl: string + + // Test utils + let testClient: MasterClient + let account: Account + let nexusClient: NexusClient + let nexusAccountAddress: Address + let recipient: Account + let recipientAddress: Address + + beforeAll(async () => { + network = await toNetwork() + + chain = network.chain + bundlerUrl = network.bundlerUrl + account = getTestAccount(0) + recipient = getTestAccount(1) + recipientAddress = recipient.address + testClient = toTestClient(chain, getTestAccount(5)) + + nexusClient = await createNexusClient({ + holder: account, + chain, + transport: http(), + bundlerTransport: http(bundlerUrl) + }) + + nexusAccountAddress = await nexusClient.account.getCounterFactualAddress() + await fundAndDeployClients(testClient, [nexusClient]) + }) + + afterAll(async () => { + await killNetwork([network?.rpcPort, network?.bundlerPort]) + }) + + test("should have smart account bytecode", async () => { + const bytecodes = await Promise.all( + [TEST_CONTRACTS.SmartSession, TEST_CONTRACTS.UniActionPolicy].map( + (address) => testClient.getCode(address) + ) + ) + expect(bytecodes.every((bytecode) => !!bytecode?.length)).toBeTruthy() + }) + + test("should parse a human friendly policy reference value to the hex version expected by the contracts", async () => { + const TWO_THOUSAND_AS_HEX = + "0x00000000000000000000000000000000000000000000000000000000000007d0" + + expect(parseReferenceValue(BigInt(2000))).toBe(TWO_THOUSAND_AS_HEX) + expect(parseReferenceValue(2000)).toBe(TWO_THOUSAND_AS_HEX) + expect(parseReferenceValue("7d0")).toBe(TWO_THOUSAND_AS_HEX) + expect( + parseReferenceValue( + parseReferenceValue(pad(toHex(BigInt(2000)), { size: 32 })) + ) + ).toBe(TWO_THOUSAND_AS_HEX) + }) + + test("should get a universal action policy", async () => { + const actionConfigData = { + valueLimitPerUse: BigInt(1000), + paramRules: { + length: 2, + rules: [ + { + condition: ParamCondition.EQUAL, + offsetIndex: 0, + isLimited: true, + ref: 1000, + usage: { + limit: BigInt(1000), + used: BigInt(10) + } + }, + { + condition: ParamCondition.LESS_THAN, + offsetIndex: 1, + isLimited: false, + ref: 2000, + usage: { + limit: BigInt(2000), + used: BigInt(100) + } + } + ] + } + } + const installUniversalPolicy = policies.to.universalAction(actionConfigData) + + expect(installUniversalPolicy.address).toEqual( + TEST_CONTRACTS.UniActionPolicy.address + ) + expect(installUniversalPolicy.initData).toBeDefined() + expect(installUniversalPolicy.deInitData).toEqual("0x") + }) + + test("should get a sudo action policy", async () => { + const installSudoActionPolicy = policies.sudo + expect(installSudoActionPolicy.address).toBeDefined() + expect(installSudoActionPolicy.initData).toEqual("0x") + expect(installSudoActionPolicy.deInitData).toEqual("0x") + }) + + test("should get a spending limit policy", async () => { + const installSpendingLimitPolicy = policies.to.spendingLimits([ + { + limit: BigInt(1000), + token: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + } + ]) + + expect(installSpendingLimitPolicy.address).toBeDefined() + expect(installSpendingLimitPolicy.initData).toBeDefined() + expect(installSpendingLimitPolicy.deInitData).toEqual("0x") + }) +}) diff --git a/src/sdk/modules/smartSessions.ts b/src/sdk/modules/smartSessions.ts new file mode 100644 index 000000000..deaf32206 --- /dev/null +++ b/src/sdk/modules/smartSessions.ts @@ -0,0 +1,147 @@ +import { type Address, type Hex, encodeAbiParameters } from "viem" +import { UniActionPolicyAbi } from "../__contracts/abi" +import { type AnyReferenceValue, parseReferenceValue } from "./utils/Helper" + +export type Rule = { + /** + * EQUAL = 0, + * GREATER_THAN = 1, + * LESS_THAN = 2, + * GREATER_THAN_OR_EQUAL = 3, + * LESS_THAN_OR_EQUAL = 4, + * NOT_EQUAL = 5 + */ + condition: ParamCondition + /** + * The offset in the calldata where the value to be checked is located. + * The offset is in multiples of 32 bytes. (Note: not the offsetIndex) + * The offsetIndex is generally the index of the arg in the method that you wish to target. + * The exception is when the arg is in an array + * In this case, the offsetIndex needs to be figured out using its position in the array + * (See the 'use-of-dynamic-types' example below for how to figure out the offsetIndex for an array) + * + * https://docs.soliditylang.org/en/develop/abi-spec.html#use-of-dynamic-types + * + * */ + offsetIndex: number + /** + * If the rule is limited, the usage object will contain the limit and the used values. + */ + isLimited: boolean + /** + * The reference value to compare against. You can pass in the raw hex value or a human-friendly value. + * Use the raw hex value if you are sure of the value you are passing in. + */ + ref: AnyReferenceValue + /** + * The usage object will contain the limit and the used values, and is only required if the isLimited property is true. + */ + usage: LimitUsage +} + +export type ActionConfig = { + valueLimitPerUse: bigint + paramRules: { + length: number + rules: Rule[] + } +} + +export const toActionConfig = (config: ActionConfig): RawActionConfig => ({ + valueLimitPerUse: BigInt(config.valueLimitPerUse), + paramRules: { + length: BigInt(config.paramRules.length), + rules: config.paramRules.rules.map((rule) => { + const parsedRef = parseReferenceValue(rule.ref) + return { + condition: rule.condition, + offset: BigInt(rule.offsetIndex) * BigInt(32), + isLimited: rule.isLimited, + ref: parsedRef, + usage: rule.usage + } + }) + } +}) + +export type RawActionConfig = { + valueLimitPerUse: bigint + paramRules: RawParamRules +} + +export type RawParamRules = { + length: bigint + rules: RawParamRule[] +} + +export type RawParamRule = { + condition: ParamCondition + offset: bigint + isLimited: boolean + ref: Hex + usage: LimitUsage +} + +export type LimitUsage = { + limit: bigint + used: bigint +} + +export enum ParamCondition { + EQUAL = 0, + GREATER_THAN = 1, + LESS_THAN = 2, + GREATER_THAN_OR_EQUAL = 3, + LESS_THAN_OR_EQUAL = 4, + NOT_EQUAL = 5 +} + +export type Policy = { + address: Hex + initData: Hex + deInitData: Hex +} + +export type Params = { + token: Address + limit: bigint +}[] + +export const MAX_RULES = 16 + +export const toUniversalActionPolicy = ( + actionConfig: ActionConfig +): Policy => ({ + address: "0x28120dC008C36d95DE5fa0603526f219c1Ba80f6", + initData: encodeAbiParameters(UniActionPolicyAbi, [ + toActionConfig(actionConfig) + ]), + deInitData: "0x" +}) + +export const sudoPolicy: Policy = { + address: "0x", + initData: "0x", + deInitData: "0x" +} + +export const toSpendingLimitsPolicy = (params: Params): Policy => { + return { + address: "0xDe9688b24c00699Ad51961ef90Ce5a9a8C49982B", + initData: encodeAbiParameters( + [{ type: "address[]" }, { type: "uint256[]" }], + [params.map(({ token }) => token), params.map(({ limit }) => limit)] + ), + deInitData: "0x" + } +} + +export const policies = { + to: { + universalAction: toUniversalActionPolicy, + spendingLimits: toSpendingLimitsPolicy + }, + sudo: sudoPolicy +} as const + +export default policies diff --git a/src/sdk/modules/utils/Constants.ts b/src/sdk/modules/utils/Constants.ts new file mode 100644 index 000000000..0f1d7ba38 --- /dev/null +++ b/src/sdk/modules/utils/Constants.ts @@ -0,0 +1,3 @@ +import type { ModuleVersion } from "./Types.js" + +export const DEFAULT_MODULE_VERSION: ModuleVersion = "1.0.0-beta" diff --git a/src/sdk/modules/utils/Helper.ts b/src/sdk/modules/utils/Helper.ts new file mode 100644 index 000000000..8975e154f --- /dev/null +++ b/src/sdk/modules/utils/Helper.ts @@ -0,0 +1,207 @@ +import { + type ByteArray, + type Chain, + type Hex, + encodeAbiParameters, + isHex, + keccak256, + pad, + parseAbiParameters, + toHex +} from "viem" +import { generatePrivateKey, privateKeyToAccount } from "viem/accounts" +import { + ERROR_MESSAGES, + type UserOperationStruct, + getChain +} from "../../account/index.js" +import type { + ChainInfo, + SignerData + // createOwnableValidatorModule +} from "../../index.js" + +/** + * Rule + * + * https://docs.biconomy.io/modules/sessions/sessionvalidationmodule + * + * Rules define permissions for the args of an allowed method. With rules, you can precisely define what should be the args of the transaction that is allowed for a given Session. Every Rule works with a single static arg or a 32-byte chunk of the dynamic arg. + * Since the ABI Encoding translates every static param into a 32-bytes word, even the shorter ones (like address or uint8), every Rule defines a desired relation (Condition) between n-th 32bytes word of the calldata and a reference Value (that is obviously a 32-bytes word as well). + * So, when dApp is creating a _sessionKeyData to enable a session, it should convert every shorter static arg to a 32bytes word to match how it will be actually ABI encoded in the userOp.callData. + * For the dynamic args, like bytes, every 32-bytes word of the calldata such as offset of the bytes arg, length of the bytes arg, and n-th 32-bytes word of the bytes arg can be controlled by a dedicated Rule. + */ +// export interface Rule { +// /** +// * +// * offset +// * +// * https://docs.biconomy.io/modules/sessions/sessionvalidationmodule +// * +// * The offset in the ABI SVM contract helps locate the relevant data within the function call data, it serves as a reference point from which to start reading or extracting specific information required for validation. When processing function call data, particularly in low-level languages like Solidity assembly, it's necessary to locate where specific parameters or arguments are stored. The offset is used to calculate the starting position within the calldata where the desired data resides. Suppose we have a function call with multiple arguments passed as calldata. Each argument occupies a certain number of bytes, and the offset helps determine where each argument begins within the calldata. +// * Using the offset to Extract Data: In the contract, the offset is used to calculate the position within the calldata where specific parameters or arguments are located. Since every arg is a 32-bytes word, offsets are always multiplier of 32 (or of 0x20 in hex). +// * Let's see how the offset is applied to extract the to and value arguments of a transfer(address to, uint256 value) method: +// * - Extracting to Argument: The to argument is the first parameter of the transfer function, representing the recipient address. Every calldata starts with the 4-bytes method selector. However, the ABI SVM is adding the selector length itself, so for the first argument the offset will always be 0 (0x00); +// * - Extracting value Argument: The value argument is the second parameter of the transfer function, representing the amount of tokens to be transferred. To extract this argument, the offset for the value parameter would be calculated based on its position in the function calldata. Despite to is a 20-bytes address, in the solidity abi encoding it is always appended with zeroes to a 32-bytes word. So the offset for the second 32-bytes argument (which isthe value in our case) will be 32 (or 0x20 in hex). +// * +// * If you need to deal with dynamic-length arguments, such as bytes, please refer to this document https://docs.soliditylang.org/en/v0.8.24/abi-spec.html#function-selector-and-argument-encoding to learn more about how dynamic arguments are represented in the calldata and which offsets should be used to access them. +// */ +// offset: number +// /** +// * condition +// * +// * 0 - Equal +// * 1 - Less than or equal +// * 2 - Less than +// * 3 - Greater than or equal +// * 4 - Greater than +// * 5 - Not equal +// */ +// condition: number +// /** The value to compare against */ +// referenceValue: +// | string +// | number +// | bigint +// | boolean +// | ByteArray +// | HardcodedReference +// } + +/** + * @deprecated + */ +export interface DeprecatedRule { + offset: number + condition: number + referenceValue: Hex +} +/** + * @deprecated + */ +export interface DeprecatedPermission { + destContract: `0x${string}` + functionSelector: `0x${string}` + valueLimit: bigint + rules: DeprecatedRule[] +} + +// export interface Permission { +// /** The address of the contract to which the permission applies */ +// destContract: `0x${string}` +// /** The function selector of the contract to which the permission applies */ +// functionSelector: `0x${string}` +// /** The maximum value that can be transferred in a single transaction */ +// valueLimit: bigint +// /** The rules that define the conditions under which the permission is granted */ +// rules: Rule[] +// } + +function packUserOp( + op: Partial, + forSignature = true +): Hex { + if (!op.callData) throw new Error("Missing userOp properties") + if (forSignature) { + return encodeAbiParameters( + parseAbiParameters( + "address, uint256, bytes32, uint256, uint256, uint256, uint256, uint256, bytes32" + ), + [ + op.sender ?? "0x", + BigInt(op.nonce ?? 0n), + keccak256(op.callData), + BigInt(op.callGasLimit ?? 0n), + BigInt(op.verificationGasLimit ?? 0n), + BigInt(op.preVerificationGas ?? 0n), + BigInt(op.maxFeePerGas ?? 0n), + BigInt(op.maxPriorityFeePerGas ?? 0n), + keccak256(op.paymasterAndData ?? "0x") + ] + ) + } + // for the purpose of calculating gas cost encode also signature (and no keccak of bytes) + return encodeAbiParameters( + parseAbiParameters( + "address, uint256, bytes, uint256, uint256, uint256, uint256, uint256, bytes" + ), + [ + op.sender ?? "0x", + BigInt(op.nonce ?? 0n), + keccak256(op.callData), + BigInt(op.callGasLimit ?? 0n), + BigInt(op.verificationGasLimit ?? 0n), + BigInt(op.preVerificationGas ?? 0n), + BigInt(op.maxFeePerGas ?? 0n), + BigInt(op.maxPriorityFeePerGas ?? 0n), + keccak256(op.paymasterAndData ?? "0x") + ] + ) +} + +export const getUserOpHash = ( + userOp: Partial, + entryPointAddress: Hex, + chainId: number +): Hex => { + const userOpHash = keccak256(packUserOp(userOp, true)) + const enc = encodeAbiParameters( + parseAbiParameters("bytes32, address, uint256"), + [userOpHash, entryPointAddress, BigInt(chainId)] + ) + return keccak256(enc) +} + +export const getRandomSigner = (): SignerData => { + const pkey = generatePrivateKey() + const account = privateKeyToAccount(pkey) + return { + pvKey: pkey, + pbKey: account.address + } +} + +export const parseChain = (chainInfo: ChainInfo): Chain => { + if (typeof chainInfo === "number") return getChain(chainInfo) + return chainInfo +} + +export type HardcodedReference = { + raw: Hex +} +type BaseReferenceValue = string | number | bigint | boolean | ByteArray +export type AnyReferenceValue = BaseReferenceValue | HardcodedReference +/** + * + * parseReferenceValue + * + * Parses the reference value to a hex string. + * The reference value can be hardcoded using the {@link HardcodedReference} type. + * Otherwise, it can be a string, number, bigint, boolean, or ByteArray. + * + * @param referenceValue {@link AnyReferenceValue} + * @returns Hex + */ +export function parseReferenceValue(referenceValue: AnyReferenceValue): Hex { + let result: Hex + if ((referenceValue as HardcodedReference)?.raw) { + result = (referenceValue as HardcodedReference)?.raw + } else if (typeof referenceValue === "bigint") { + result = pad(toHex(referenceValue), { size: 32 }) as Hex + } else if (typeof referenceValue === "number") { + result = pad(toHex(BigInt(referenceValue)), { size: 32 }) as Hex + } else if (typeof referenceValue === "boolean") { + result = pad(toHex(referenceValue), { size: 32 }) as Hex + } else if (isHex(referenceValue)) { + result = referenceValue + } else if (typeof referenceValue === "string") { + result = pad(referenceValue as Hex, { size: 32 }) + } else { + // (typeof referenceValue === "object") + result = pad(toHex(referenceValue as ByteArray), { size: 32 }) as Hex + } + if (!isHex(result) || result.length !== 66) { + throw new Error(ERROR_MESSAGES.INVALID_HEX) + } + return result +} diff --git a/src/sdk/modules/utils/Types.ts b/src/sdk/modules/utils/Types.ts new file mode 100644 index 000000000..ba723048c --- /dev/null +++ b/src/sdk/modules/utils/Types.ts @@ -0,0 +1,167 @@ +import type { Address, Chain, Hex } from "viem" +import type { Holder, UnknownHolder } from "../../account/utils/toHolder" + +export type ModuleVersion = "1.0.0-beta" // | 'V1_0_1' + +export interface BaseValidationModuleConfig { + /** entryPointAddress: address of the entry point */ + entryPointAddress?: Hex +} + +export interface K1ValidationModuleConfig extends BaseValidationModuleConfig { + /** Address of the module */ + moduleAddress?: Hex + /** Version of the module */ + version?: ModuleVersion + /** Signer: viemWallet or ethers signer. Ingested when passed into smartAccount */ + signer: UnknownHolder +} + +export interface K1ValidatorModuleConfigConstructorProps + extends BaseValidationModuleConfig { + /** Address of the module */ + moduleAddress?: Hex + /** Version of the module */ + version?: ModuleVersion + /** Signer: Converted from viemWallet or ethers signer to Holder */ + holder: Holder +} + +export type SessionDataTuple = [ + bigint | number, + bigint | number, + Hex, + Hex, + string[], + string +] + +export type SessionParams = { + /** ID of the session */ + sessionID?: string + /** Session Signer: viemWallet or ethers signer. Ingested when passed into smartAccount */ + sessionSigner: UnknownHolder + /** The session validation module is a sub-module smart-contract which works with session key manager validation module. It validates the userop calldata against the defined session permissions (session key data) within the contract. */ + sessionValidationModule?: Hex + /** Additional info if needed to be appended in signature */ + additionalSessionData?: string +} + +export type StrictSessionParams = { + sessionID: string + sessionSigner: UnknownHolder +} + +export type ModuleInfo = { + // Could be a full object of below params and that way it can be an array too! + // sessionParams?: SessionParams[] // where SessionParams is below four + sessionID?: string + /** Session Signer: viemWallet or ethers signer. Ingested when passed into smartAccount */ + sessionHolder?: UnknownHolder + /** The session validation module is a sub-module smart-contract which works with session key manager validation module. It validates the userop calldata against the defined session permissions (session key data) within the contract. */ + sessionValidationModule?: Hex + /** Additional info if needed to be appended in signature */ + additionalSessionData?: string + /** Batch session params */ + batchSessionParams?: SessionParams[] +} + +export interface SendUserOpParams extends ModuleInfo {} + +export type SignerData = { + /** This is not the public as provided by viem, key but address for the given pvKey */ + pbKey: Hex + /** Private key */ + pvKey: Hex +} + +export type ChainInfo = number | Chain + +export type CreateSessionDataResponse = { + data: string + sessionIDInfo: Array +} + +export interface CreateSessionDataParams { + /** window end for the session key */ + validUntil: number + /** window start for the session key */ + validAfter: number + /** Address of the session validation module */ + sessionValidationModule: Hex + /** Public key of the session */ + sessionPublicKey: Hex + /** The hex of the rules {@link Rule} that make up the policy */ + sessionKeyData: Hex + /** we generate uuid based sessionId. but if you prefer to track it on your side and attach custom session identifier this can be passed */ + preferredSessionId?: string +} + +export interface MultiChainValidationModuleConfig + extends BaseValidationModuleConfig { + /** Address of the module */ + moduleAddress?: Hex + /** Version of the module */ + version?: ModuleVersion + /** Signer: viemWallet or ethers signer. Ingested when passed into smartAccount */ + signer: UnknownHolder +} +export interface MultiChainValidationModuleConfigConstructorProps + extends BaseValidationModuleConfig { + /** Address of the module */ + moduleAddress?: Hex + /** Version of the module */ + version?: ModuleVersion + /** Signer: viemWallet or ethers signer. Ingested when passed into smartAccount */ + holder: Holder +} + +export interface BaseSessionKeyData { + sessionKey: Hex +} + +export interface ERC20SessionKeyData extends BaseSessionKeyData { + /** ERC20 token address */ + token: Hex + /** Recipient address */ + recipient: Hex + /** ERC20 amount (Bigint) */ + maxAmount: bigint +} + +export interface SessionValidationModuleConfig { + /** Address of the module */ + moduleAddress: string +} + +export type V3ModuleInfo = { + module: Address + data: Hex + additionalContext: Hex + type: ModuleType + hook?: Address +} + +export type Execution = { + target: Address + value: bigint + callData: Hex +} + +export enum SafeHookType { + GLOBAL = 0, + SIG = 1 +} + +export type ModuleType = "validator" | "executor" | "fallback" | "hook" + +type ModuleTypeIds = { + [index in ModuleType]: 1 | 2 | 3 | 4 +} + +export const moduleTypeIds: ModuleTypeIds = { + validator: 1, + executor: 2, + fallback: 3, + hook: 4 +} diff --git a/src/sdk/modules/utils/Uid.ts b/src/sdk/modules/utils/Uid.ts new file mode 100644 index 000000000..58080849d --- /dev/null +++ b/src/sdk/modules/utils/Uid.ts @@ -0,0 +1,12 @@ +// small uid generator, hex: 0-9, a-f (10 chars) +export const generateRandomHex = (): string => { + const hexChars = "0123456789abcdef" + let result = "" + + for (let i = 0; i < 10; i++) { + const randomIndex = Math.floor(Math.random() * hexChars.length) + result += hexChars[randomIndex] + } + + return result +} diff --git a/src/sdk/modules/validators/K1ValidatorModule.ts b/src/sdk/modules/validators/K1ValidatorModule.ts new file mode 100644 index 000000000..eb9f7415f --- /dev/null +++ b/src/sdk/modules/validators/K1ValidatorModule.ts @@ -0,0 +1,25 @@ +import addresses from "../../__contracts/addresses.js" +import type { Holder } from "../../account/utils/toHolder.js" +import type { Module } from "../../clients/decorators/erc7579/index.js" +import { BaseValidationModule } from "../base/BaseValidationModule.js" + +export class K1ValidatorModule extends BaseValidationModule { + // biome-ignore lint/complexity/noUselessConstructor: + public constructor(moduleConfig: Module, holder: Holder) { + super(moduleConfig, holder) + } + + public static async create( + holder: Holder, + k1ValidatorAddress = addresses.K1Validator + ): Promise { + const module: Module = { + address: k1ValidatorAddress, + type: "validator", + context: holder.address, + additionalContext: "0x" + } + const instance = new K1ValidatorModule(module, holder) + return instance + } +} diff --git a/src/sdk/modules/validators/OwnableValidator.ts b/src/sdk/modules/validators/OwnableValidator.ts new file mode 100644 index 000000000..3de563c37 --- /dev/null +++ b/src/sdk/modules/validators/OwnableValidator.ts @@ -0,0 +1,179 @@ +// import { +// type Address, +// concat, +// decodeAbiParameters, +// encodeAbiParameters, +// encodeFunctionData, +// getAddress, +// parseAbi, +// parseAbiParameters +// } from "viem" +// import type { Hex } from "viem" +// import type { NexusSmartAccount } from "../../account/NexusSmartAccount.js" +// import { ModuleType, SENTINEL_ADDRESS } from "../../account/index.js" +// import type { UserOpReceipt } from "../../bundler/index.js" +// import { BaseValidationModule } from "../base/BaseValidationModule.js" +// import { OWNABLE_VALIDATOR } from "../utils/Constants.js" +// import type { V3ModuleInfo } from "../utils/Types.js" + +// export class OwnableValidator extends BaseValidationModule { +// public smartAccount: NexusSmartAccount +// public owners: Address[] +// public threshold: number + +// private constructor( +// moduleConfig: V3ModuleInfo, +// smartAccount: NexusSmartAccount +// ) { +// const moduleData = decodeAbiParameters( +// parseAbiParameters("uint256 threshold, address[] owners"), +// moduleConfig.data +// ) +// super(moduleConfig, smartAccount.getSmartAccountOwner()) +// this.threshold = Number(moduleData[0]) +// this.owners = [...moduleData[1]] as Address[] +// this.smartAccount = smartAccount +// } + +// public static async create( +// smartAccount: NexusSmartAccount, +// threshold: number, +// owners: Address[], +// hook?: Address +// ): Promise { +// if ( +// !owners.includes(await smartAccount.getSmartAccountOwner().getAddress()) +// ) { +// throw Error("Signer needs to be one of the owners") +// } +// const installData = encodeAbiParameters( +// [ +// { name: "threshold", type: "uint256" }, +// { name: "owners", type: "address[]" } +// ], +// [BigInt(threshold), owners] +// ) +// const moduleInfo: V3ModuleInfo = { +// module: OWNABLE_VALIDATOR, +// type: ModuleType.Validation, +// data: installData, +// additionalContext: "0x", +// hook +// } +// const instance = new OwnableValidator(moduleInfo, smartAccount) +// return instance +// } + +// public async setThreshold(threshold: number): Promise { +// const calldata = encodeFunctionData({ +// functionName: "setThreshold", +// abi: parseAbi(["function setThreshold(uint256 _threshold)"]), +// args: [BigInt(threshold)] +// }) +// const response = await this.smartAccount.sendTransaction({ +// to: this.moduleAddress, +// data: calldata, +// value: 0n +// }) +// const receipt = await response.wait(5) +// if(receipt.success) { +// this.threshold = threshold +// } +// return receipt +// } + +// public async removeOwner(owner: Address, signatures?: Hex[]): Promise { +// const owners = await this.getOwners() +// let prevOwner: Address + +// const currentOwnerIndex = owners.findIndex((o: Address) => o === owner) + +// if (currentOwnerIndex === -1) { +// throw new Error("Owner not found") +// } +// if (currentOwnerIndex === 0) { +// prevOwner = SENTINEL_ADDRESS +// } else { +// prevOwner = getAddress(owners[currentOwnerIndex - 1]) +// } + +// const calldata = encodeFunctionData({ +// functionName: "removeOwner", +// abi: parseAbi(["function removeOwner(address prevOwner, address owner)"]), +// args: [prevOwner, owner] +// }) + +// const transaction = { +// to: this.moduleAddress, +// data: calldata, +// value: 0n +// } + +// let receipt: UserOpReceipt; +// if(owners.length > 1) { +// if(signatures?.length === owners.length) { +// let userOp = await this.smartAccount.buildUserOp([transaction]); +// const finalSignature = concat(signatures); +// userOp.signature = finalSignature; +// const response = await this.smartAccount.sendUserOp(userOp); +// receipt = await response.wait(5); +// } else { +// throw new Error("Signatures must be provided for all owners") +// } +// } else { +// const response = await this.smartAccount.sendTransaction([transaction]) +// receipt = await response.wait(5) +// } + +// if(receipt.success) { +// this.owners = this.owners.filter((o: Address) => o !== owner) +// } +// return receipt + +// } + +// public async addOwner(owner: Address): Promise { +// const calldata = encodeFunctionData({ +// functionName: "addOwner", +// abi: parseAbi(["function addOwner(address owner)"]), +// args: [owner] +// }) +// const response = await this.smartAccount.sendTransaction({ +// to: this.moduleAddress, +// data: calldata, +// value: 0n +// }) +// const receipt = await response.wait(5) +// if(receipt.success) { +// this.owners.push(owner) +// } +// return receipt +// } + +// public async getOwners(): Promise { +// try { +// const owners = (await this.smartAccount.publicClient.readContract({ +// address: OWNABLE_VALIDATOR, +// abi: parseAbi([ +// "function getOwners(address account) external view returns (address[])" +// ]), +// functionName: "getOwners", +// args: [await this.smartAccount.getAccountAddress()] +// })) as Address[] + +// return owners +// } catch (err) { +// console.error(err) +// return [] +// } +// } + +// public getDummySignature(): Hex { +// return "0xfe68e79dbbc872d7a22c6f3eb24f8145edf8d8333092c666221db79bf236e25626e9b05d8230aee0baee7e8b15d60b51e408f1e640b1e0c89deb874b17e269d91b199dfd0340577f695639a048a231a64d181f4e2d66acd5c29ecd0a9b25593c291eb4aba21a15fa4fded885e2c44a49887de1cc9adced5088bcac65cf8c1f29c71c" as Hex +// } + +// async signUserOpHash(userOpHash: string): Promise { +// const signature = await this.signer.signMessage({ raw: userOpHash as Hex }) +// return signature as Hex +// } +// } diff --git a/src/sdk/modules/validators/ValidationModule.ts b/src/sdk/modules/validators/ValidationModule.ts new file mode 100644 index 000000000..4a57b9ce1 --- /dev/null +++ b/src/sdk/modules/validators/ValidationModule.ts @@ -0,0 +1,25 @@ +import type { Address, Hex } from "viem" +import type { Holder } from "../../account/utils/toHolder.js" +import type { Module } from "../../clients/decorators/erc7579/index.js" +import { BaseValidationModule } from "../base/BaseValidationModule.js" + +export class ValidationModule extends BaseValidationModule { + private constructor(moduleConfig: Module, holder: Holder) { + super(moduleConfig, holder) + } + + public static async create( + holder: Holder, + address: Address, + context: Hex + ): Promise { + const module: Module = { + address, + type: "validator", + context, + additionalContext: "0x" + } + const instance = new ValidationModule(module, holder) + return instance + } +} diff --git a/src/sdk/modules/validators/k1Validator.test.ts b/src/sdk/modules/validators/k1Validator.test.ts new file mode 100644 index 000000000..e50d06928 --- /dev/null +++ b/src/sdk/modules/validators/k1Validator.test.ts @@ -0,0 +1,127 @@ +import { http, type Account, type Address, type Chain } from "viem" +import { afterAll, beforeAll, describe, expect, test } from "vitest" +import { toNetwork } from "../../../test/testSetup" +import { + fundAndDeployClients, + getBalance, + getTestAccount, + killNetwork, + toTestClient +} from "../../../test/testUtils" +import type { MasterClient, NetworkConfig } from "../../../test/testUtils" +import addresses from "../../__contracts/addresses" +import { + type NexusClient, + createNexusClient +} from "../../clients/createNexusClient" + +describe("modules.k1Validator.write", async () => { + let network: NetworkConfig + let chain: Chain + let bundlerUrl: string + + // Test utils + let testClient: MasterClient + let account: Account + let nexusClient: NexusClient + let nexusAccountAddress: Address + let recipient: Account + let recipientAddress: Address + + beforeAll(async () => { + network = await toNetwork() + + chain = network.chain + bundlerUrl = network.bundlerUrl + account = getTestAccount(0) + recipient = getTestAccount(1) + recipientAddress = recipient.address + + testClient = toTestClient(chain, getTestAccount(5)) + + nexusClient = await createNexusClient({ + holder: account, + chain, + transport: http(), + bundlerTransport: http(bundlerUrl) + }) + + nexusAccountAddress = await nexusClient.account.getCounterFactualAddress() + await fundAndDeployClients(testClient, [nexusClient]) + }) + + afterAll(async () => { + await killNetwork([network?.rpcPort, network?.bundlerPort]) + }) + + test.skip("should send eth", async () => { + const balanceBefore = await getBalance(testClient, recipientAddress) + const hash = await nexusClient.sendTransaction({ + calls: [ + { + to: recipientAddress, + value: 1n + } + ] + }) + const { success } = await nexusClient.waitForUserOperationReceipt({ hash }) + const balanceAfter = await getBalance(testClient, recipientAddress) + expect(success).toBe(true) + expect(balanceAfter - balanceBefore).toBe(1n) + }) + + test.skip("should install k1 validator with 1 owner", async () => { + const isInstalledBefore = await nexusClient.isModuleInstalled({ + module: { + type: "validator", + address: addresses.K1Validator, + context: "0x" + } + }) + + if (!isInstalledBefore) { + const hash = await nexusClient.installModule({ + module: { + address: addresses.K1Validator, + type: "validator", + context: "0x" + } + }) + + const { success: installSuccess } = + await nexusClient.waitForUserOperationReceipt({ hash }) + expect(installSuccess).toBe(true) + + const hashUninstall = await nexusClient.uninstallModule({ + module: { + address: addresses.K1Validator, + type: "validator", + context: "0x" + } + }) + + const { success: uninstallSuccess } = + await nexusClient.waitForUserOperationReceipt({ hash: hashUninstall }) + expect(uninstallSuccess).toBe(true) + } else { + // Uninstall + + const byteCode = await testClient.getCode({ + address: addresses.K1Validator + }) + + const hash = await nexusClient.uninstallModule({ + module: { + address: addresses.K1Validator, + type: "validator", + context: "0x" + } + }) + const { success } = await nexusClient.waitForUserOperationReceipt({ + hash + }) + expect(success).toBe(true) + } + // Get installed modules + }) +}) diff --git a/src/test/README.md b/src/test/README.md new file mode 100644 index 000000000..92656bfa3 --- /dev/null +++ b/src/test/README.md @@ -0,0 +1,94 @@ +# @biconomy/sdk Testing Framework + +## Testing Setup + +> **Note**: +> - Tests now must be run with node version >= v22 + +### Network Agnostic Tests +- Tests are executed against locally deployed ephemeral Anvil chains (each with a different ID) with relevant contracts pre-deployed for each test. +- Bundlers for testing are instantiated using [prool](https://github.com/wevm/prool), currently utilizing alto instances. We plan to switch to Biconomy's bundlers when they become available via `prool`. + +### Deployment Configuration +A custom script `bun run fetch:deployment` is provided to search for the bytecode of deployed contracts from a customizable location (default: `../../nexus/deployments`). This folder is **auto-generated** in Nexus whenever a new Hardhat deployment is made, ensuring that the SDK remains up-to-date with the latest contract changes. + +The script performs the following: +- **ABIs**: Moved to `./src/__contracts/{name}Abi.ts` +- **Addresses**: Moved to `./src/addresses.ts` +- **Additional Fixtures**: Copied to `tests__/contracts` + +The script accepts a number of args from the command line: + - nexusDeploymentPath (default: `"../node_modules/nexus/deployments"`) + - chainName (default: `"anvil-55000"`) + - forSrc (default: `["K1ValidatorFactory", "Nexus", "K1Validator"]`); + +Example usage: +```bash +bun run fetch:deployment:raw --chainName=anvil-52878 -forSrc=K1Validator -forSrc=Nexus --nexusDeploymentPath=../../nexus/deployments +bun run lint --apply-unsafe +``` + +> **Note**: +> - Do not edit these files manually; they will be overridden if/when a new Nexus deployment occurs. +> - Avoid hardcoding important addresses (e.g., `const K1_VALIDATOR_ADDRESS = "0x"`). Use `./src/addresses.ts` instead. + +## Network Scopes for Tests + +To prevent tests from conflicting with one another, tests can be scoped to different networks in different ways. + +### Global Scope +- Use by setting `const NETWORK_TYPE: TestFileNetworkType = "COMMON_LOCALHOST"` at the top of the test file. +- Suitable when you're sure that tests in the file will **not** conflict with other tests using the common localhost network. + +### Local Scope +- Use by setting `const NETWORK_TYPE: TestFileNetworkType = "FILE_LOCALHOST"` for test files that may conflict with others. +- Networks scoped locally are isolated to the file in which they are used. +- Tests within the same file using a local network may conflict with each other. If needed, split tests into separate files or use the Test Scope. + +### Test Scope +- A network is spun up *only* for the individual test in which it is used. Access this via the `localhostTest`/`testnetTest` helpers in the same file as `"COMMON_LOCALHOST"` or `"FILE_LOCALHOST"` network types. + +Example usage: +```ts +localhostTest("should be used in the following way", async({ config: { bundlerUrl, chain, fundedClients }}) => { + // chain, bundlerUrl spun up just in time for this test only... + expect(await fundedClients.smartAccount.getAccountAddress()).toBeTruthy(); +}); +``` + +> **Note:** +> Please avoid using multiple nested describe() blocks in a single test file, as it is unnecessary and can lead to confusion regarding network scope. +> Using *many* test files is preferable, as describe blocks run in parallel. + +## Testing on Testnets or New Chains +- There is currently one area where SDK tests can be run against a remote testnet: the playground +- You can run the playground using the command: `bun run playground`. They playground is automatically ommitted from CICD. +- Additionally there are helpers for running tests on files on a public testnet: + - `const NETWORK_TYPE: TestFileNetworkType = "TESTNET"` will pick up relevant configuration from environment variables, and can be used at the top of a test file to have tests run against the specified testnet instead of the localhost + - If you want to run a single test on a public testnet *from inside a different describe block* you can use the: `testnetTest` helper: + +Example usage: +```ts +testnetTest("should be used in the following way", async({ config: { bundlerUrl, chain, account }}) => { + // chain, bundlerUrl etc taken from environment variables... + expect(account).toBeTruthy(); // from private key, please ensure it is funded if sending txs +}); +``` + +> **Note:** +> As testnetTest runs against a public testnet the account related to the privatekey (in your env var) must be funded, and the testnet is not 'ephemeral', meaning state is obviously persisted on the testnet after the test finishes. + +- The playground does not run in CI/CD but can be triggered manually from the GitHub Actions UI or locally via bun run playground. +- The playground network is configured with environment variables: + - PRIVATE_KEY + - CHAIN_ID + - RPC_URL (optional, inferred if unset) + - BUNDLER_URL (optional, inferred if unset) + - PAYMASTER_URL (tests skipped if unset) + +## Debugging and Client Issues +It is recommended to use the playground for debugging issues with clients. Please refer to the following guidelines for escalation and handover: [Debugging Client Issues](https://www.notion.so/biconomy/Debugging-Client-Issues-cc01c1cab0224c87b37a4d283370165b) + +## Testing Helpers +A [testClient](https://viem.sh/docs/clients/test#extending-with-public--wallet-actions) is available (funded and extended with walletActions and publicActions) during testing. Please use it as a master Client for all things network related. + diff --git a/src/test/__contracts/abi/BiconomyMetaFactoryAbi.ts b/src/test/__contracts/abi/BiconomyMetaFactoryAbi.ts new file mode 100644 index 000000000..78202292d --- /dev/null +++ b/src/test/__contracts/abi/BiconomyMetaFactoryAbi.ts @@ -0,0 +1,319 @@ +export const BiconomyMetaFactoryAbi = [ + { + inputs: [ + { + internalType: "address", + name: "owner_", + type: "address" + } + ], + stateMutability: "nonpayable", + type: "constructor" + }, + { + inputs: [], + name: "AlreadyInitialized", + type: "error" + }, + { + inputs: [], + name: "CallToDeployWithFactoryFailed", + type: "error" + }, + { + inputs: [], + name: "FactoryNotWhitelisted", + type: "error" + }, + { + inputs: [], + name: "InvalidEntryPointAddress", + type: "error" + }, + { + inputs: [], + name: "InvalidFactoryAddress", + type: "error" + }, + { + inputs: [], + name: "NewOwnerIsZeroAddress", + type: "error" + }, + { + inputs: [], + name: "NoHandoverRequest", + type: "error" + }, + { + inputs: [], + name: "Unauthorized", + type: "error" + }, + { + inputs: [], + name: "ZeroAddressNotAllowed", + type: "error" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "OwnershipHandoverCanceled", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "OwnershipHandoverRequested", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldOwner", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address" + } + ], + name: "OwnershipTransferred", + type: "event" + }, + { + inputs: [ + { + internalType: "address", + name: "factory", + type: "address" + } + ], + name: "addFactoryToWhitelist", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + }, + { + internalType: "uint32", + name: "unstakeDelaySec", + type: "uint32" + } + ], + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "cancelOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "completeOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "factory", + type: "address" + }, + { + internalType: "bytes", + name: "factoryData", + type: "bytes" + } + ], + name: "deployWithFactory", + outputs: [ + { + internalType: "address payable", + name: "createdAccount", + type: "address" + } + ], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + name: "factoryWhitelist", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "factory", + type: "address" + } + ], + name: "isFactoryWhitelisted", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "result", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "ownershipHandoverExpiresAt", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "factory", + type: "address" + } + ], + name: "removeFactoryFromWhitelist", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "requestOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address" + } + ], + name: "transferOwnership", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + } + ], + name: "unlockStake", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + }, + { + internalType: "address payable", + name: "withdrawAddress", + type: "address" + } + ], + name: "withdrawStake", + outputs: [], + stateMutability: "nonpayable", + type: "function" + } +] as const diff --git a/src/test/__contracts/abi/BootstrapAbi.ts b/src/test/__contracts/abi/BootstrapAbi.ts new file mode 100644 index 000000000..42f6c45ad --- /dev/null +++ b/src/test/__contracts/abi/BootstrapAbi.ts @@ -0,0 +1,802 @@ +export const BootstrapAbi = [ + { + inputs: [], + name: "CanNotRemoveLastValidator", + type: "error" + }, + { + inputs: [], + name: "EnableModeSigError", + type: "error" + }, + { + inputs: [ + { + internalType: "bytes4", + name: "selector", + type: "bytes4" + } + ], + name: "FallbackAlreadyInstalledForSelector", + type: "error" + }, + { + inputs: [], + name: "FallbackCallTypeInvalid", + type: "error" + }, + { + inputs: [], + name: "FallbackHandlerUninstallFailed", + type: "error" + }, + { + inputs: [ + { + internalType: "bytes4", + name: "selector", + type: "bytes4" + } + ], + name: "FallbackNotInstalledForSelector", + type: "error" + }, + { + inputs: [], + name: "FallbackSelectorForbidden", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "currentHook", + type: "address" + } + ], + name: "HookAlreadyInstalled", + type: "error" + }, + { + inputs: [], + name: "HookPostCheckFailed", + type: "error" + }, + { + inputs: [], + name: "InvalidInput", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address" + } + ], + name: "InvalidModule", + type: "error" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + } + ], + name: "InvalidModuleTypeId", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "entry", + type: "address" + } + ], + name: "LinkedList_EntryAlreadyInList", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "entry", + type: "address" + } + ], + name: "LinkedList_InvalidEntry", + type: "error" + }, + { + inputs: [], + name: "LinkedList_InvalidPage", + type: "error" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + } + ], + name: "MismatchModuleTypeId", + type: "error" + }, + { + inputs: [ + { + internalType: "bytes4", + name: "selector", + type: "bytes4" + } + ], + name: "MissingFallbackHandler", + type: "error" + }, + { + inputs: [], + name: "ModuleAddressCanNotBeZero", + type: "error" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + }, + { + internalType: "address", + name: "module", + type: "address" + } + ], + name: "ModuleAlreadyInstalled", + type: "error" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + }, + { + internalType: "address", + name: "module", + type: "address" + } + ], + name: "ModuleNotInstalled", + type: "error" + }, + { + inputs: [], + name: "NoValidatorInstalled", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address" + } + ], + name: "UnauthorizedOperation", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address" + } + ], + name: "ValidatorNotInstalled", + type: "error" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract IERC7484", + name: "registry", + type: "address" + } + ], + name: "ERC7484RegistryConfigured", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + }, + { + indexed: false, + internalType: "address", + name: "module", + type: "address" + } + ], + name: "ModuleInstalled", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + }, + { + indexed: false, + internalType: "address", + name: "module", + type: "address" + } + ], + name: "ModuleUninstalled", + type: "event" + }, + { + stateMutability: "payable", + type: "fallback" + }, + { + inputs: [], + name: "eip712Domain", + outputs: [ + { + internalType: "bytes1", + name: "fields", + type: "bytes1" + }, + { + internalType: "string", + name: "name", + type: "string" + }, + { + internalType: "string", + name: "version", + type: "string" + }, + { + internalType: "uint256", + name: "chainId", + type: "uint256" + }, + { + internalType: "address", + name: "verifyingContract", + type: "address" + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32" + }, + { + internalType: "uint256[]", + name: "extensions", + type: "uint256[]" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "getActiveHook", + outputs: [ + { + internalType: "address", + name: "hook", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "cursor", + type: "address" + }, + { + internalType: "uint256", + name: "size", + type: "uint256" + } + ], + name: "getExecutorsPaginated", + outputs: [ + { + internalType: "address[]", + name: "array", + type: "address[]" + }, + { + internalType: "address", + name: "next", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes4", + name: "selector", + type: "bytes4" + } + ], + name: "getFallbackHandlerBySelector", + outputs: [ + { + internalType: "CallType", + name: "", + type: "bytes1" + }, + { + internalType: "address", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig[]", + name: "validators", + type: "tuple[]" + }, + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig[]", + name: "executors", + type: "tuple[]" + }, + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig", + name: "hook", + type: "tuple" + }, + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig[]", + name: "fallbacks", + type: "tuple[]" + }, + { + internalType: "contract IERC7484", + name: "registry", + type: "address" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + }, + { + internalType: "uint8", + name: "threshold", + type: "uint8" + } + ], + name: "getInitNexusCalldata", + outputs: [ + { + internalType: "bytes", + name: "init", + type: "bytes" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig[]", + name: "validators", + type: "tuple[]" + }, + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig", + name: "hook", + type: "tuple" + }, + { + internalType: "contract IERC7484", + name: "registry", + type: "address" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + }, + { + internalType: "uint8", + name: "threshold", + type: "uint8" + } + ], + name: "getInitNexusScopedCalldata", + outputs: [ + { + internalType: "bytes", + name: "init", + type: "bytes" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig", + name: "validator", + type: "tuple" + }, + { + internalType: "contract IERC7484", + name: "registry", + type: "address" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + }, + { + internalType: "uint8", + name: "threshold", + type: "uint8" + } + ], + name: "getInitNexusWithSingleValidatorCalldata", + outputs: [ + { + internalType: "bytes", + name: "init", + type: "bytes" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "cursor", + type: "address" + }, + { + internalType: "uint256", + name: "size", + type: "uint256" + } + ], + name: "getValidatorsPaginated", + outputs: [ + { + internalType: "address[]", + name: "array", + type: "address[]" + }, + { + internalType: "address", + name: "next", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig[]", + name: "validators", + type: "tuple[]" + }, + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig[]", + name: "executors", + type: "tuple[]" + }, + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig", + name: "hook", + type: "tuple" + }, + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig[]", + name: "fallbacks", + type: "tuple[]" + }, + { + internalType: "contract IERC7484", + name: "registry", + type: "address" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + }, + { + internalType: "uint8", + name: "threshold", + type: "uint8" + } + ], + name: "initNexus", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig[]", + name: "validators", + type: "tuple[]" + }, + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig", + name: "hook", + type: "tuple" + }, + { + internalType: "contract IERC7484", + name: "registry", + type: "address" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + }, + { + internalType: "uint8", + name: "threshold", + type: "uint8" + } + ], + name: "initNexusScoped", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "contract IModule", + name: "validator", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + }, + { + internalType: "contract IERC7484", + name: "registry", + type: "address" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + }, + { + internalType: "uint8", + name: "threshold", + type: "uint8" + } + ], + name: "initNexusWithSingleValidator", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [], + name: "registry", + outputs: [ + { + internalType: "contract IERC7484", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + stateMutability: "payable", + type: "receive" + } +] as const diff --git a/src/test/__contracts/abi/BootstrapLibAbi.ts b/src/test/__contracts/abi/BootstrapLibAbi.ts new file mode 100644 index 000000000..6bd8aafdd --- /dev/null +++ b/src/test/__contracts/abi/BootstrapLibAbi.ts @@ -0,0 +1,110 @@ +export const BootstrapLibAbi = [ + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "createArrayConfig", + outputs: [ + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig[]", + name: "config", + type: "tuple[]" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "address[]", + name: "modules", + type: "address[]" + }, + { + internalType: "bytes[]", + name: "datas", + type: "bytes[]" + } + ], + name: "createMultipleConfigs", + outputs: [ + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig[]", + name: "configs", + type: "tuple[]" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "createSingleConfig", + outputs: [ + { + components: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + internalType: "struct BootstrapConfig", + name: "config", + type: "tuple" + } + ], + stateMutability: "pure", + type: "function" + } +] as const diff --git a/src/test/__contracts/abi/CounterAbi.ts b/src/test/__contracts/abi/CounterAbi.ts new file mode 100644 index 000000000..93c3650e1 --- /dev/null +++ b/src/test/__contracts/abi/CounterAbi.ts @@ -0,0 +1,36 @@ +export const CounterAbi = [ + { + inputs: [], + name: "decrementNumber", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [], + name: "getNumber", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "incrementNumber", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [], + name: "revertOperation", + outputs: [], + stateMutability: "pure", + type: "function" + } +] as const diff --git a/src/test/__contracts/abi/MockExecutorAbi.ts b/src/test/__contracts/abi/MockExecutorAbi.ts new file mode 100644 index 000000000..ec9f7ba11 --- /dev/null +++ b/src/test/__contracts/abi/MockExecutorAbi.ts @@ -0,0 +1,309 @@ +export const MockExecutorAbi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes32", + name: "dataFirstWord", + type: "bytes32" + } + ], + name: "ExecutorOnInstallCalled", + type: "event" + }, + { + inputs: [ + { + internalType: "ExecutionMode", + name: "mode", + type: "bytes32" + }, + { + internalType: "contract INexus", + name: "account", + type: "address" + }, + { + internalType: "address", + name: "target", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + }, + { + internalType: "bytes", + name: "callData", + type: "bytes" + } + ], + name: "customExecuteViaAccount", + outputs: [ + { + internalType: "bytes[]", + name: "returnData", + type: "bytes[]" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "contract INexus", + name: "account", + type: "address" + }, + { + internalType: "bytes", + name: "callData", + type: "bytes" + } + ], + name: "execDelegatecall", + outputs: [ + { + internalType: "bytes[]", + name: "returnData", + type: "bytes[]" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "contract INexus", + name: "account", + type: "address" + }, + { + components: [ + { + internalType: "address", + name: "target", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + }, + { + internalType: "bytes", + name: "callData", + type: "bytes" + } + ], + internalType: "struct Execution[]", + name: "execs", + type: "tuple[]" + } + ], + name: "executeBatchViaAccount", + outputs: [ + { + internalType: "bytes[]", + name: "returnData", + type: "bytes[]" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "contract INexus", + name: "account", + type: "address" + }, + { + internalType: "address", + name: "target", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + }, + { + internalType: "bytes", + name: "callData", + type: "bytes" + } + ], + name: "executeViaAccount", + outputs: [ + { + internalType: "bytes[]", + name: "returnData", + type: "bytes[]" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [], + name: "getModuleTypes", + outputs: [ + { + internalType: "EncodedModuleTypes", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + name: "isInitialized", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + } + ], + name: "isModuleType", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "onInstall", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "onUninstall", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "contract INexus", + name: "account", + type: "address" + }, + { + components: [ + { + internalType: "address", + name: "target", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + }, + { + internalType: "bytes", + name: "callData", + type: "bytes" + } + ], + internalType: "struct Execution[]", + name: "execs", + type: "tuple[]" + } + ], + name: "tryExecuteBatchViaAccount", + outputs: [ + { + internalType: "bytes[]", + name: "returnData", + type: "bytes[]" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "contract INexus", + name: "account", + type: "address" + }, + { + internalType: "address", + name: "target", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + }, + { + internalType: "bytes", + name: "callData", + type: "bytes" + } + ], + name: "tryExecuteViaAccount", + outputs: [ + { + internalType: "bytes[]", + name: "returnData", + type: "bytes[]" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + stateMutability: "payable", + type: "receive" + } +] as const diff --git a/src/test/__contracts/abi/MockHandlerAbi.ts b/src/test/__contracts/abi/MockHandlerAbi.ts new file mode 100644 index 000000000..0daeaab6f --- /dev/null +++ b/src/test/__contracts/abi/MockHandlerAbi.ts @@ -0,0 +1,227 @@ +export const MockHandlerAbi = [ + { + inputs: [ + { + internalType: "bytes4", + name: "selector", + type: "bytes4" + } + ], + name: "NonExistingMethodCalled", + type: "error" + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256" + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "GenericFallbackCalled", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes32", + name: "dataFirstWord", + type: "bytes32" + } + ], + name: "HandlerOnInstallCalled", + type: "event" + }, + { + stateMutability: "nonpayable", + type: "fallback" + }, + { + inputs: [], + name: "NAME", + outputs: [ + { + internalType: "string", + name: "", + type: "string" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "VERSION", + outputs: [ + { + internalType: "string", + name: "", + type: "string" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "count", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "getState", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + name: "isInitialized", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + } + ], + name: "isModuleType", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "onGenericFallback", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "onInstall", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "onUninstall", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [], + name: "revertingFunction", + outputs: [], + stateMutability: "pure", + type: "function" + }, + { + inputs: [], + name: "stateChangingFunction", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [], + name: "successFunction", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32" + } + ], + stateMutability: "pure", + type: "function" + } +] as const diff --git a/src/test/__contracts/abi/MockHookAbi.ts b/src/test/__contracts/abi/MockHookAbi.ts new file mode 100644 index 000000000..cfc2f6344 --- /dev/null +++ b/src/test/__contracts/abi/MockHookAbi.ts @@ -0,0 +1,133 @@ +export const MockHookAbi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes32", + name: "dataFirstWord", + type: "bytes32" + } + ], + name: "HookOnInstallCalled", + type: "event" + }, + { + anonymous: false, + inputs: [], + name: "PostCheckCalled", + type: "event" + }, + { + anonymous: false, + inputs: [], + name: "PreCheckCalled", + type: "event" + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + name: "isInitialized", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + } + ], + name: "isModuleType", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "onInstall", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "", + type: "bytes" + } + ], + name: "onUninstall", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "hookData", + type: "bytes" + } + ], + name: "postCheck", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "preCheck", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes" + } + ], + stateMutability: "nonpayable", + type: "function" + } +] as const diff --git a/src/test/__contracts/abi/MockRegistryAbi.ts b/src/test/__contracts/abi/MockRegistryAbi.ts new file mode 100644 index 000000000..0b058e905 --- /dev/null +++ b/src/test/__contracts/abi/MockRegistryAbi.ts @@ -0,0 +1,162 @@ +export const MockRegistryAbi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address" + } + ], + name: "Log", + type: "event" + }, + { + anonymous: false, + inputs: [], + name: "NewTrustedAttesters", + type: "event" + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + }, + { + internalType: "uint256", + name: "threshold", + type: "uint256" + } + ], + name: "check", + outputs: [], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "uint256", + name: "moduleType", + type: "uint256" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + }, + { + internalType: "uint256", + name: "threshold", + type: "uint256" + } + ], + name: "check", + outputs: [], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "uint256", + name: "moduleType", + type: "uint256" + } + ], + name: "check", + outputs: [], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address" + } + ], + name: "check", + outputs: [], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "smartAccount", + type: "address" + }, + { + internalType: "address", + name: "module", + type: "address" + } + ], + name: "checkForAccount", + outputs: [], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "smartAccount", + type: "address" + }, + { + internalType: "address", + name: "module", + type: "address" + }, + { + internalType: "uint256", + name: "moduleType", + type: "uint256" + } + ], + name: "checkForAccount", + outputs: [], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "uint8", + name: "", + type: "uint8" + }, + { + internalType: "address[]", + name: "attesters", + type: "address[]" + } + ], + name: "trustAttesters", + outputs: [], + stateMutability: "nonpayable", + type: "function" + } +] as const diff --git a/src/test/__contracts/abi/MockTokenAbi.ts b/src/test/__contracts/abi/MockTokenAbi.ts new file mode 100644 index 000000000..213ee0cf4 --- /dev/null +++ b/src/test/__contracts/abi/MockTokenAbi.ts @@ -0,0 +1,344 @@ +export const MockTokenAbi = [ + { + inputs: [ + { + internalType: "string", + name: "name", + type: "string" + }, + { + internalType: "string", + name: "symbol", + type: "string" + } + ], + stateMutability: "nonpayable", + type: "constructor" + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address" + }, + { + internalType: "uint256", + name: "allowance", + type: "uint256" + }, + { + internalType: "uint256", + name: "needed", + type: "uint256" + } + ], + name: "ERC20InsufficientAllowance", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "uint256", + name: "balance", + type: "uint256" + }, + { + internalType: "uint256", + name: "needed", + type: "uint256" + } + ], + name: "ERC20InsufficientBalance", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "approver", + type: "address" + } + ], + name: "ERC20InvalidApprover", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address" + } + ], + name: "ERC20InvalidReceiver", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address" + } + ], + name: "ERC20InvalidSender", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address" + } + ], + name: "ERC20InvalidSpender", + type: "error" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "Approval", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "Transfer", + type: "event" + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address" + }, + { + internalType: "address", + name: "spender", + type: "address" + } + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address" + } + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "mint", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address" + }, + { + internalType: "address", + name: "to", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "nonpayable", + type: "function" + } +] as const diff --git a/src/test/__contracts/abi/MockValidatorAbi.ts b/src/test/__contracts/abi/MockValidatorAbi.ts new file mode 100644 index 000000000..68ed5ed75 --- /dev/null +++ b/src/test/__contracts/abi/MockValidatorAbi.ts @@ -0,0 +1,299 @@ +export const MockValidatorAbi = [ + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address" + } + ], + name: "getOwner", + outputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + name: "isInitialized", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "uint256", + name: "moduleTypeId", + type: "uint256" + } + ], + name: "isModuleType", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "pure", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address" + }, + { + internalType: "address", + name: "owner", + type: "address" + } + ], + name: "isOwner", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address" + }, + { + internalType: "bytes32", + name: "hash", + type: "bytes32" + }, + { + internalType: "bytes", + name: "signature", + type: "bytes" + } + ], + name: "isValidSignatureWithSender", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address" + }, + { + internalType: "bytes32", + name: "hash", + type: "bytes32" + }, + { + internalType: "bytes", + name: "signature", + type: "bytes" + } + ], + name: "isValidSignatureWithSenderLegacy", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "onInstall", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "onUninstall", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + name: "smartAccountOwners", + outputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "supportsNestedTypedDataSign", + outputs: [ + { + internalType: "bytes32", + name: "result", + type: "bytes32" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes32", + name: "hash", + type: "bytes32" + }, + { + internalType: "bytes", + name: "sig", + type: "bytes" + }, + { + internalType: "bytes", + name: "data", + type: "bytes" + } + ], + name: "validateSignatureWithData", + outputs: [ + { + internalType: "bool", + name: "validSig", + type: "bool" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "uint256", + name: "nonce", + type: "uint256" + }, + { + internalType: "bytes", + name: "initCode", + type: "bytes" + }, + { + internalType: "bytes", + name: "callData", + type: "bytes" + }, + { + internalType: "bytes32", + name: "accountGasLimits", + type: "bytes32" + }, + { + internalType: "uint256", + name: "preVerificationGas", + type: "uint256" + }, + { + internalType: "bytes32", + name: "gasFees", + type: "bytes32" + }, + { + internalType: "bytes", + name: "paymasterAndData", + type: "bytes" + }, + { + internalType: "bytes", + name: "signature", + type: "bytes" + } + ], + internalType: "struct PackedUserOperation", + name: "userOp", + type: "tuple" + }, + { + internalType: "bytes32", + name: "userOpHash", + type: "bytes32" + } + ], + name: "validateUserOp", + outputs: [ + { + internalType: "uint256", + name: "validation", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + } +] as const diff --git a/src/test/__contracts/abi/NexusAccountFactoryAbi.ts b/src/test/__contracts/abi/NexusAccountFactoryAbi.ts new file mode 100644 index 000000000..0e0c48d3c --- /dev/null +++ b/src/test/__contracts/abi/NexusAccountFactoryAbi.ts @@ -0,0 +1,323 @@ +export const NexusAccountFactoryAbi = [ + { + inputs: [ + { + internalType: "address", + name: "implementation_", + type: "address" + }, + { + internalType: "address", + name: "owner_", + type: "address" + } + ], + stateMutability: "nonpayable", + type: "constructor" + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address" + } + ], + name: "AccountAlreadyDeployed", + type: "error" + }, + { + inputs: [], + name: "AlreadyInitialized", + type: "error" + }, + { + inputs: [], + name: "ImplementationAddressCanNotBeZero", + type: "error" + }, + { + inputs: [], + name: "InvalidEntryPointAddress", + type: "error" + }, + { + inputs: [], + name: "NewOwnerIsZeroAddress", + type: "error" + }, + { + inputs: [], + name: "NoHandoverRequest", + type: "error" + }, + { + inputs: [], + name: "Unauthorized", + type: "error" + }, + { + inputs: [], + name: "ZeroAddressNotAllowed", + type: "error" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address" + }, + { + indexed: true, + internalType: "bytes", + name: "initData", + type: "bytes" + }, + { + indexed: true, + internalType: "bytes32", + name: "salt", + type: "bytes32" + } + ], + name: "AccountCreated", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "OwnershipHandoverCanceled", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "OwnershipHandoverRequested", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldOwner", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address" + } + ], + name: "OwnershipTransferred", + type: "event" + }, + { + inputs: [], + name: "ACCOUNT_IMPLEMENTATION", + outputs: [ + { + internalType: "address", + name: "", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + }, + { + internalType: "uint32", + name: "unstakeDelaySec", + type: "uint32" + } + ], + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "cancelOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "completeOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "initData", + type: "bytes" + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32" + } + ], + name: "computeAccountAddress", + outputs: [ + { + internalType: "address payable", + name: "expectedAddress", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "bytes", + name: "initData", + type: "bytes" + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32" + } + ], + name: "createAccount", + outputs: [ + { + internalType: "address payable", + name: "", + type: "address" + } + ], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "result", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "ownershipHandoverExpiresAt", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "requestOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address" + } + ], + name: "transferOwnership", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + } + ], + name: "unlockStake", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + }, + { + internalType: "address payable", + name: "withdrawAddress", + type: "address" + } + ], + name: "withdrawStake", + outputs: [], + stateMutability: "nonpayable", + type: "function" + } +] as const diff --git a/src/test/__contracts/abi/StakeableAbi.ts b/src/test/__contracts/abi/StakeableAbi.ts new file mode 100644 index 000000000..9dc5da90e --- /dev/null +++ b/src/test/__contracts/abi/StakeableAbi.ts @@ -0,0 +1,211 @@ +export const StakeableAbi = [ + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address" + } + ], + stateMutability: "nonpayable", + type: "constructor" + }, + { + inputs: [], + name: "AlreadyInitialized", + type: "error" + }, + { + inputs: [], + name: "InvalidEntryPointAddress", + type: "error" + }, + { + inputs: [], + name: "NewOwnerIsZeroAddress", + type: "error" + }, + { + inputs: [], + name: "NoHandoverRequest", + type: "error" + }, + { + inputs: [], + name: "Unauthorized", + type: "error" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "OwnershipHandoverCanceled", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "OwnershipHandoverRequested", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldOwner", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address" + } + ], + name: "OwnershipTransferred", + type: "event" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + }, + { + internalType: "uint32", + name: "unstakeDelaySec", + type: "uint32" + } + ], + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "cancelOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "completeOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "result", + type: "address" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "pendingOwner", + type: "address" + } + ], + name: "ownershipHandoverExpiresAt", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [], + name: "requestOwnershipHandover", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address" + } + ], + name: "transferOwnership", + outputs: [], + stateMutability: "payable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + } + ], + name: "unlockStake", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "epAddress", + type: "address" + }, + { + internalType: "address payable", + name: "withdrawAddress", + type: "address" + } + ], + name: "withdrawStake", + outputs: [], + stateMutability: "nonpayable", + type: "function" + } +] as const diff --git a/src/test/__contracts/abi/TokenWithPermitAbi.ts b/src/test/__contracts/abi/TokenWithPermitAbi.ts new file mode 100644 index 000000000..2360d7b36 --- /dev/null +++ b/src/test/__contracts/abi/TokenWithPermitAbi.ts @@ -0,0 +1,611 @@ +export const TokenWithPermitAbi = [ + { + inputs: [ + { + internalType: "string", + name: "name", + type: "string" + }, + { + internalType: "string", + name: "symbol", + type: "string" + } + ], + stateMutability: "nonpayable", + type: "constructor" + }, + { + inputs: [], + name: "ECDSAInvalidSignature", + type: "error" + }, + { + inputs: [ + { + internalType: "uint256", + name: "length", + type: "uint256" + } + ], + name: "ECDSAInvalidSignatureLength", + type: "error" + }, + { + inputs: [ + { + internalType: "bytes32", + name: "s", + type: "bytes32" + } + ], + name: "ECDSAInvalidSignatureS", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "signer", + type: "address" + } + ], + name: "ERC1271InvalidSigner", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address" + }, + { + internalType: "uint256", + name: "allowance", + type: "uint256" + }, + { + internalType: "uint256", + name: "needed", + type: "uint256" + } + ], + name: "ERC20InsufficientAllowance", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "uint256", + name: "balance", + type: "uint256" + }, + { + internalType: "uint256", + name: "needed", + type: "uint256" + } + ], + name: "ERC20InsufficientBalance", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "approver", + type: "address" + } + ], + name: "ERC20InvalidApprover", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address" + } + ], + name: "ERC20InvalidReceiver", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address" + } + ], + name: "ERC20InvalidSender", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address" + } + ], + name: "ERC20InvalidSpender", + type: "error" + }, + { + inputs: [ + { + internalType: "uint256", + name: "deadline", + type: "uint256" + } + ], + name: "ERC2612ExpiredSignature", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "signer", + type: "address" + }, + { + internalType: "address", + name: "owner", + type: "address" + } + ], + name: "ERC2612InvalidSigner", + type: "error" + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address" + }, + { + internalType: "uint256", + name: "currentNonce", + type: "uint256" + } + ], + name: "InvalidAccountNonce", + type: "error" + }, + { + inputs: [], + name: "InvalidShortString", + type: "error" + }, + { + inputs: [ + { + internalType: "string", + name: "str", + type: "string" + } + ], + name: "StringTooLong", + type: "error" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "Approval", + type: "event" + }, + { + anonymous: false, + inputs: [], + name: "EIP712DomainChanged", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "Transfer", + type: "event" + }, + { + inputs: [], + name: "DOMAIN_SEPARATOR", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "PERMIT_TYPEHASH_LOCAL", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address" + }, + { + internalType: "address", + name: "spender", + type: "address" + } + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address" + } + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "eip712Domain", + outputs: [ + { + internalType: "bytes1", + name: "fields", + type: "bytes1" + }, + { + internalType: "string", + name: "name", + type: "string" + }, + { + internalType: "string", + name: "version", + type: "string" + }, + { + internalType: "uint256", + name: "chainId", + type: "uint256" + }, + { + internalType: "address", + name: "verifyingContract", + type: "address" + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32" + }, + { + internalType: "uint256[]", + name: "extensions", + type: "uint256[]" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "mint", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address" + } + ], + name: "nonces", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address" + }, + { + internalType: "address", + name: "spender", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256" + }, + { + internalType: "uint8", + name: "v", + type: "uint8" + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32" + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32" + } + ], + name: "permit", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address" + }, + { + internalType: "address", + name: "spender", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256" + }, + { + internalType: "bytes", + name: "signature", + type: "bytes" + } + ], + name: "permitWith1271", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address" + }, + { + internalType: "address", + name: "to", + type: "address" + }, + { + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "nonpayable", + type: "function" + } +] as const diff --git a/src/test/__contracts/abi/index.ts b/src/test/__contracts/abi/index.ts new file mode 100644 index 000000000..d4c21de13 --- /dev/null +++ b/src/test/__contracts/abi/index.ts @@ -0,0 +1,13 @@ +export * from "./MockHookAbi" +export * from "./StakeableAbi" +export * from "./NexusAccountFactoryAbi" +export * from "./BiconomyMetaFactoryAbi" +export * from "./CounterAbi" +export * from "./MockValidatorAbi" +export * from "./MockTokenAbi" +export * from "./BootstrapLibAbi" +export * from "./MockRegistryAbi" +export * from "./MockHandlerAbi" +export * from "./BootstrapAbi" +export * from "./MockExecutorAbi" +export * from "./TokenWithPermitAbi" diff --git a/src/test/__contracts/mockAddresses.ts b/src/test/__contracts/mockAddresses.ts new file mode 100644 index 000000000..b6dfb220a --- /dev/null +++ b/src/test/__contracts/mockAddresses.ts @@ -0,0 +1,19 @@ +// The contents of this folder is auto-generated. Please do not edit as your changes are likely to be overwritten + +import type { Hex } from "viem" +export const mockAddresses: Record = { + MockHook: "0x4445134442b717275c06034D0e6A589C258a7CfC", + Stakeable: "0x251a414Fa6a2a719Cf79D370F9aEb2e0817FA086", + NexusAccountFactory: "0xA2cE66fB6bBA1828DbcE2114682286c82434e59E", + BiconomyMetaFactory: "0xDdb351881419426F0942921db482690Da5a47d22", + Counter: "0x61f70428b61864B38D9B45b7B032c700B960acCD", + MockValidator: "0x4713E68A85A2ED5FF28e61DD76f17E8Cd94f4992", + MockToken: "0xe22ed8281e84aeAA770eE04f0E07dAf6A028117F", + BootstrapLib: "0x15a93E4a5221e9aDe5B3E6A7A70060080cc464f0", + MockRegistry: "0xD270D6A18B9C6063dE7B92EBd25B11f74e8B75eB", + MockHandler: "0x67D49D2345A96890c2A986bE294e8808868C5057", + TokenWithPermit: "0xfD6345760Ff39EC6B19506a7b8486EcA74B3F82A", + Bootstrap: "0xF53a824Bb0508FBa3a599FaF5BD37CE70b0867Fc", + MockExecutor: "0x9A75Bc1C839164196Eb5668b38337712994A2c8A" +} as const +export default mockAddresses diff --git a/src/test/callDatas.ts b/src/test/callDatas.ts new file mode 100644 index 000000000..3d1a11aa6 --- /dev/null +++ b/src/test/callDatas.ts @@ -0,0 +1,73 @@ +import type { Hex } from "viem" +import type { DeployerParams } from "./testUtils" + +export const TEST_CONTRACTS: Record = { + // Rhinestone Ownables + OwnableValidator: { + chainId: 84532, + name: "OwnableValidator", + address: "0xfb11d7ca9161F1DF508787BA45951225B6C0a681" + }, + OwnableExecutor: { + chainId: 84532, + name: "OwnableExecutor", + address: "0x989110e958902f619148b8171fbDF1Dca0c5AE0B" + }, + // Smart sessions + SmartSession: { + chainId: 84532, + name: "SmartSession", + address: "0x0ce452fD9d0a20BCC14A2C4830E22bEB7EA4C8ee" + }, + SimpleSigner: { + chainId: 84532, + name: "Simple Signer", + address: "0xAAAdFd794A1781e4Fd3eA64985F107a7Ac2b3872" + }, + UniActionPolicy: { + chainId: 84532, + name: "UniActionPolicy", + address: "0x28120dC008C36d95DE5fa0603526f219c1Ba80f6" + }, + TimeFramePolicy: { + chainId: 84532, + name: "TimeFramePolicy", + address: "0x0B7BB9bD65858593D97f12001FaDa94828307805" + }, + UsageLimitPolicy: { + chainId: 84532, + name: "UsageLimitPolicy", + address: "0x80EF509D2F79eA332540e9698bDbc7B7FA3E1f74" + }, + ValueLimitPolicy: { + chainId: 84532, + name: "ValueLimitPolicy", + address: "0xDe9688b24c00699Ad51961ef90Ce5a9a8C49982B" + }, + WalletConnectCoSigner: { + chainId: 84532, + name: "WalletConnect CoSigner", + address: "0x24084171C36Fa6dfdf41D9C89A51F600ed35A731" + }, + MockK1Validator: { + chainId: 84532, + name: "MockK1Validator", + address: "0x2db5c5A93c71A2562b751Ad3eaB18BFB5fb96374" + }, + MockValidator: { + chainId: 84532, + name: "MockValidator", + address: "0x61Cb30337CB980383704f2Debfb8bea66d0f26b3" + }, + UserOperationBuilder: { + chainId: 84532, + name: "UserOperationBuilder", + address: "0xb07D7605a1AAeE4e56915363418229c127fF7C3D" + } +} + +export const ENTRY_POINT_SIMULATIONS_CREATECALL: Hex = + "0x313233340000000000000000000000000000000000000000000000000000000060806040526040516100109061005f565b604051809103906000f08015801561002c573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905534801561005957600080fd5b5061006c565b613d318061050783390190565b61048c8061007b6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c18f522614610030575b600080fd5b61004361003e366004610230565b610059565b60405161005091906103b0565b60405180910390f35b60606000825167ffffffffffffffff811115610077576100776101e9565b6040519080825280602002602001820160405280156100aa57816020015b60608152602001906001900390816100955790505b50905060005b835181101561019d57606060007f850aaf621a3721219c57b79d6077e318862cf95113b5637afaddb124884a5eb060008054906101000a90046001600160a01b031687858151811061010457610104610414565b602002602001015160405160240161011d92919061042a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050600061015f8882845a6101a5565b905080610174576101716000196101bd565b92505b8285858151811061018757610187610414565b60209081029190910101525050506001016100b0565b509392505050565b6000806000845160208601878987f195945050505050565b60603d828111156101cb5750815b604051602082018101604052818152816000602083013e9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610228576102286101e9565b604052919050565b600080604080848603121561024457600080fd5b83356001600160a01b038116811461025b57600080fd5b925060208481013567ffffffffffffffff8082111561027957600080fd5b8187019150601f88601f84011261028f57600080fd5b8235828111156102a1576102a16101e9565b8060051b6102b08682016101ff565b918252848101860191868101908c8411156102ca57600080fd5b87870192505b83831015610357578235868111156102e85760008081fd5b8701603f81018e136102fa5760008081fd5b888101358781111561030e5761030e6101e9565b61031f818801601f19168b016101ff565b8181528f8c8385010111156103345760008081fd5b818c84018c83013760009181018b019190915283525091870191908701906102d0565b8099505050505050505050509250929050565b6000815180845260005b8181101561039057602081850181015186830182015201610374565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561040757603f198886030184526103f585835161036a565b945092850192908501906001016103d9565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038316815260406020820181905260009061044e9083018461036a565b94935050505056fea26469706673582212207ddd3776bce2d23a4710581621f90634e5e2f38c35b4ba3416ba605ac54ef07b64736f6c6343000817003360a060405260405162000012906200009d565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b0390811660805260408051808201825260008082528251808401909352808352602080840191825282018390529051600380546001600160a01b031916919094161790925551600455516005553480156200009157600080fd5b506001600255620000ab565b6102138062003b1e83390190565b608051613a5a620000c460003960005050613a5a6000f3fe6080604052600436106101395760003560e01c80635287ce12116100ab578063bb9fe6bf1161006f578063bb9fe6bf14610505578063c23a5cea1461051a578063c3bce0091461053a578063c5f996e614610567578063fc7e286d14610587578063fe2171cb1461062f57600080fd5b80635287ce12146103575780635895273b1461046f57806370a082311461048f578063b760faf9146104c5578063baa22044146104d857600080fd5b80631b2e01b8116100fd5780631b2e01b814610219578063205c28781461025f57806322cdde4c1461027f578063263934db1461029f57806330ec25d1146102cc57806335567e1a146102f957600080fd5b80630396cb601461014e5780630513fbf4146101615780630bd28e3b146101975780630da82661146101b75780630dbfc6bd146101ec57600080fd5b36610149576101473361064f565b005b600080fd5b61014761015c366004612c8c565b610670565b34801561016d57600080fd5b5061018161017c366004612cfd565b610904565b60405161018e9190612e11565b60405180910390f35b3480156101a357600080fd5b506101476101b2366004612e8c565b610a24565b3480156101c357600080fd5b506101d76101d2366004612fd8565b610a5b565b6040805192835260208301919091520161018e565b3480156101f857600080fd5b5061020c610207366004613127565b610b90565b60405161018e91906131c6565b34801561022557600080fd5b5061025161023436600461321d565b600160209081526000928352604080842090915290825290205481565b60405190815260200161018e565b34801561026b57600080fd5b5061014761027a366004613252565b610c4f565b34801561028b57600080fd5b5061025161029a366004613297565b610da0565b3480156102ab57600080fd5b506102bf6102ba366004613127565b610de2565b60405161018e91906132cb565b3480156102d857600080fd5b506102ec6102e7366004613127565b610e79565b60405161018e91906133a7565b34801561030557600080fd5b5061025161031436600461321d565b6001600160a01b039190911660009081526001602090815260408083206001600160c01b0385168452909152908190205491901b67ffffffffffffffff19161790565b34801561036357600080fd5b506104146103723660046133fe565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b031660009081526020818152604091829020825160a0810184528154815260019091015460ff811615159282019290925261010082046001600160701b031692810192909252600160781b810463ffffffff166060830152600160981b900465ffffffffffff16608082015290565b60405161018e9190600060a082019050825182526020830151151560208301526001600160701b03604084015116604083015263ffffffff606084015116606083015265ffffffffffff608084015116608083015292915050565b34801561047b57600080fd5b506102bf61048a366004613297565b610f2e565b34801561049b57600080fd5b506102516104aa3660046133fe565b6001600160a01b031660009081526020819052604090205490565b6101476104d33660046133fe565b61064f565b3480156104e457600080fd5b506104f86104f3366004612cfd565b610fe9565b60405161018e919061341b565b34801561051157600080fd5b50610147611046565b34801561052657600080fd5b506101476105353660046133fe565b61117a565b34801561054657600080fd5b5061055a610555366004613297565b61139e565b60405161018e919061342e565b34801561057357600080fd5b506104f8610582366004613441565b611563565b34801561059357600080fd5b506105ec6105a23660046133fe565b6000602081905290815260409020805460019091015460ff81169061010081046001600160701b031690600160781b810463ffffffff1690600160981b900465ffffffffffff1685565b6040805195865293151560208601526001600160701b039092169284019290925263ffffffff909116606083015265ffffffffffff16608082015260a00161018e565b34801561063b57600080fd5b5061055a61064a366004613127565b61164e565b60015b600581101561066357600101610652565b61066c82611662565b5050565b33600090815260208190526040902063ffffffff82166106d75760405162461bcd60e51b815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c617900000000000060448201526064015b60405180910390fd5b600181015463ffffffff600160781b9091048116908316101561073c5760405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d650000000060448201526064016106ce565b600181015460009061075d90349061010090046001600160701b03166134fc565b9050600081116107a45760405162461bcd60e51b81526020600482015260126024820152711b9bc81cdd185ad9481cdc1958da599a595960721b60448201526064016106ce565b6001600160701b038111156107ec5760405162461bcd60e51b815260206004820152600e60248201526d7374616b65206f766572666c6f7760901b60448201526064016106ce565b6040805160a08101825283548152600160208083018281526001600160701b0386811685870190815263ffffffff8a811660608801818152600060808a0181815233808352828a52918c90209a518b55965199909801805494519151965165ffffffffffff16600160981b0265ffffffffffff60981b1997909416600160781b029690961669ffffffffffffffffffff60781b1991909516610100026effffffffffffffffffffffffffff0019991515999099166effffffffffffffffffffffffffffff1990941693909317979097179190911691909117179055835185815290810192909252917fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01910160405180910390a2505050565b60606000866001600160401b0381111561092057610920612ea7565b60405190808252806020026020018201604052801561096d57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908161093e5790505b50905060005b87811015610a185760006109ef8a8a848181106109925761099261350f565b90506020028101906109a49190613525565b8989858181106109b6576109b661350f565b90506020020160208101906109cb91906133fe565b8888868181106109dd576109dd61350f565b90506020028101906105829190613546565b905080838381518110610a0457610a0461350f565b602090810291909101015250600101610973565b50979650505050505050565b3360009081526001602090815260408083206001600160c01b03851684529091528120805491610a538361358c565b919050555050565b8251606081015160a08201516000928392909181016127100160405a603f0281610a8757610a876135a5565b041015610ad25760408051631101335b60e11b8152600060048201526024810191909152600f60448201526e41413935206f7574206f662067617360881b60648201526084016106ce565b875160009015610b66576000610aef846000015160008c866116ab565b905080610b64576000610b036108006116c3565b805190915015610b5e5784600001516001600160a01b03168a602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a201876020015184604051610b559291906135bb565b60405180910390a35b60019250505b505b600088608001515a8803019050610b7f828a8a846116ef565b955095505050505094509492505050565b60606000826001600160401b03811115610bac57610bac612ea7565b604051908082528060200260200182016040528015610be557816020015b610bd2612ac0565b815260200190600190039081610bca5790505b50905060005b83811015610c45576000610c1c868684818110610c0a57610c0a61350f565b905060200281019061048a9190613525565b905080838381518110610c3157610c3161350f565b602090810291909101015250600101610beb565b5090505b92915050565b3360009081526020819052604090208054821115610caf5760405162461bcd60e51b815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c617267650000000000000060448201526064016106ce565b8054610cbc9083906135d4565b8155604080516001600160a01b03851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a26000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114610d4f576040519150601f19603f3d011682016040523d82523d6000602084013e610d54565b606091505b5050905080610d9a5760405162461bcd60e51b81526020600482015260126024820152716661696c656420746f20776974686472617760701b60448201526064016106ce565b50505050565b6000610dab8261191b565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b610dea612ac0565b6000826001600160401b03811115610e0457610e04612ea7565b604051908082528060200260200182016040528015610e3d57816020015b610e2a612ac0565b815260200190600190039081610e225790505b509050610e4a8484610b90565b905080610e586001856135d4565b81518110610e6857610e6861350f565b602002602001015191505092915050565b60606000826001600160401b03811115610e9557610e95612ea7565b604051908082528060200260200182016040528015610ece57816020015b610ebb612b07565b815260200190600190039081610eb35790505b50905060005b83811015610c45576000610f05868684818110610ef357610ef361350f565b90506020028101906105559190613525565b905080838381518110610f1a57610f1a61350f565b602090810291909101015250600101610ed4565b610f36612ac0565b610f3e611934565b610f46612bbc565b610f4f8361195c565b6000806000610f6060008786611a29565b925092509250600080610f738887611c57565b915091506040518061010001604052808760800151815260200183815260200186815260200185815260200184815260200182815260200160001515815260200160405180604001604052806002815260200161060f60f31b8152508152509650505050505050610fe46001600255565b919050565b60408051606080820183526000808352602083018190529282015290611013888888888888610904565b9050806110216001896135d4565b815181106110315761103161350f565b60200260200101519150509695505050505050565b33600090815260208190526040812060018101549091600160781b90910463ffffffff1690036110a55760405162461bcd60e51b815260206004820152600a6024820152691b9bdd081cdd185ad95960b21b60448201526064016106ce565b600181015460ff166110ed5760405162461bcd60e51b8152602060048201526011602482015270616c726561647920756e7374616b696e6760781b60448201526064016106ce565b600181015460009061110c90600160781b900463ffffffff16426135e7565b60018301805460ff65ffffffffffff60981b011916600160981b65ffffffffffff841690810260ff19169190911790915560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020015b60405180910390a25050565b336000908152602081905260409020600181015461010090046001600160701b0316806111e05760405162461bcd60e51b81526020600482015260146024820152734e6f207374616b6520746f20776974686472617760601b60448201526064016106ce565b6001820154600160981b900465ffffffffffff166112405760405162461bcd60e51b815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b65282920666972737400000060448201526064016106ce565b600182015442600160981b90910465ffffffffffff1611156112a45760405162461bcd60e51b815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f7420647565000000000060448201526064016106ce565b600182018054610100600160c81b0319169055604080516001600160a01b03851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a26000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114611348576040519150601f19603f3d011682016040523d82523d6000602084013e61134d565b606091505b5050905080610d9a5760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b65000000000000000060448201526064016106ce565b6113a6612b07565b6113ae612bbc565b6113b78361195c565b6000806113c660008685611a29565b50915091506113d9600083836000611d64565b60006113ec846000015160e00151611f00565b8451519091506000906113fe90611f00565b905061141d604051806040016040528060008152602001600081525090565b36600061142d60408b018b613546565b90925090506000601482101561144457600061145f565b61145260146000848661360d565b61145b91613637565b60601c5b905061146a81611f00565b9350505050600085905060006040518060a0016040528089608001518152602001896040015181526020018881526020018781526020016114ac8a6060015190565b90526040805180820182526003546001600160a01b0390811682528251808401909352600454835260055460208481019190915282019290925291925083161580159061150357506001836001600160a01b031614155b15611530576040518060400160405280846001600160a01b0316815260200161152b85611f00565b905290505b6040805160a081018252928352602083019590955293810192909252506060810192909252608082015295945050505050565b60408051606080820183526000808352602083015291810191909152611587612bbc565b6115908661195c565b61159c60008783611a29565b506000915060609050816001600160a01b0388161561162b5760005a9050886001600160a01b031688886040516115d492919061366c565b6000604051808303816000865af19150503d8060008114611611576040519150601f19603f3d011682016040523d82523d6000602084013e611616565b606091505b5090945092505a61162790826135d4565b9150505b604080516060810182529182529215156020820152918201529695505050505050565b611656612b07565b6000610e4a8484610e79565b600061166e8234611f52565b9050816001600160a01b03167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48260405161116e91815260200190565b6000806000845160208601878987f195945050505050565b60603d828111156116d15750815b604051602082018101604052818152816000602083013e9392505050565b60008060005a86519091506000908161170782611f85565b60e08301519091506001600160a01b038116611726578251935061183e565b80935060008951111561183e57878202965060028b600281111561174c5761174c61367c565b1461183e5760005a9050816001600160a01b0316637c627b218560a001518e8d8c886040518663ffffffff1660e01b815260040161178d9493929190613692565b600060405180830381600088803b1580156117a757600080fd5b5087f1935050505080156117b9575060015b611838578a5180516020808e01519201516001600160a01b0390911691907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f4792906118046108006116c3565b6040516118129291906135bb565b60405180910390a38a608001515a870301985061183260028c8c8c6116ef565b90985096505b5a900395505b5a60a0840151606085015160808d01519288039a909a01990190890380821115611871576064600a828403020499909901985b505060408a01518883029750878110156118d75760028c60028111156118995761189961367c565b036118bc578097506118aa8b611fb7565b6118b78b60008a8c612006565b61190c565b8a608001515a87030198508a6040015197506118aa8b611fb7565b8781036118e48682611f52565b506000808e60028111156118fa576118fa61367c565b1490506119098d828c8e612006565b50505b50505050505094509492505050565b600061192682612081565b805190602001209050919050565b600280540361195657604051633ee5aeb560e01b815260040160405180910390fd5b60028055565b6119cf6040516135a560f21b60208201526bffffffffffffffffffffffff193060601b166022820152600160f81b603682015260009060370160408051808303601f190181529190528051602090910120600680546001600160a01b0319166001600160a01b0390921691909117905550565b6000611a006119e16040840184613546565b6119ee60208601866133fe565b6119fb60e0870187613546565b612139565b9050805160001461066c57600081604051631101335b60e11b81526004016106ce9291906135bb565b6000806000805a8551909150611a3f8782612215565b611a4887610da0565b6020870152604081015161012082015161010083015160a08401516080850151606086015160c0870151861717171717176effffffffffffffffffffffffffffff811115611ad85760405162461bcd60e51b815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f77000000000000000060448201526064016106ce565b6000611b078460c081015160a08201516080830151606084015160408501516101009095015194010101010290565b9050611b168b8b8b8487612323565b9750611b2a846000015185602001516124ba565b611b80578a604051631101335b60e11b81526004016106ce918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b825a86031115611bdc578a604051631101335b60e11b81526004016106ce918152604060208201819052601e908201527f41413236206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b606060005a60e08701519091506001600160a01b031615611c0857611c038d8d8d86612507565b995091505b60408b018390528160608c015260a08c01355a88030160808c015260645a611c3090836135d4565b611c3b9060736136dc565b611c4591906136f3565b97505050505050505093509350939050565b60008060005a90506000611c6c856060015190565b604051909150366000611c8260608a018a613546565b915091506000816003811115611c9757833591505b506372288ed160e01b6001600160e01b0319821601611d0d5760008a8a60200151604051602401611cc9929190613862565b60408051601f198184030181529190526020810180516001600160e01b0316638dd7712f60e01b1790529050611d01818b888a610a5b565b9099509750611d579050565b611d5183838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92508991508a9050610a5b565b90985096505b5050505050509250929050565b600080611d70856126b6565b91509150816001600160a01b0316836001600160a01b031614611dd65785604051631101335b60e11b81526004016106ce9181526040602082018190526014908201527320a0991a1039b4b3b730ba3ab9329032b93937b960611b606082015260800190565b8015611e2e5785604051631101335b60e11b81526004016106ce9181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b6000611e39856126b6565b925090506001600160a01b03811615611e955786604051631101335b60e11b81526004016106ce9181526040602082018190526014908201527320a0999a1039b4b3b730ba3ab9329032b93937b960611b606082015260800190565b8115611ef75786604051631101335b60e11b81526004016106ce9181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f742064756060820152606560f81b608082015260a00190565b50505050505050565b604080518082018252600080825260208083018281526001600160a01b03959095168252819052919091206001015461010081046001600160701b03168252600160781b900463ffffffff1690915290565b6001600160a01b038216600090815260208190526040812080548290611f799085906134fc565b91829055509392505050565b61010081015161012082015160009190808203611fa3575092915050565b611faf82488301612709565b949350505050565b80518051602080840151928101516040519081526001600160a01b0390921692917f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e910160405180910390a350565b835160e081015181516020808801519301516040516001600160a01b039384169492909316927f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f916120739189908990899093845291151560208401526040830152606082015260800190565b60405180910390a450505050565b60608135602083013560006120a161209c6040870187613546565b612721565b905060006120b561209c6060880188613546565b9050608086013560a087013560c088013560006120d861209c60e08c018c613546565b604080516001600160a01b039a909a1660208b015289810198909852606089019690965250608087019390935260a086019190915260c085015260e08401526101008084019190915281518084039091018152610120909201905292915050565b60608415801561215157506001600160a01b0384163b155b15612190575060408051808201909152601981527f41413230206163636f756e74206e6f74206465706c6f79656400000000000000602082015261220c565b601482106121fb5760006121a7601482858761360d565b6121b091613637565b60601c9050803b6000036121f957505060408051808201909152601b81527f41413330207061796d6173746572206e6f74206465706c6f7965640000000000602082015261220c565b505b506040805160208101909152600081525b95945050505050565b61222260208301836133fe565b6001600160a01b03168152602082810135908201526001600160801b036080808401358281166060850152811c604084015260a084013560c0808501919091528401359182166101008401521c61012082015236600061228560e0850185613546565b909250905080156123085760348110156122e15760405162461bcd60e51b815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e644461746100000060448201526064016106ce565b6122eb8282612734565b60a086015260808501526001600160a01b031660e0840152610d9a565b600060e084018190526080840181905260a084015250505050565b8251805160009190612342888761233d60408b018b613546565b61279c565b60e082015160006001600160a01b038216612386576001600160a01b03831660009081526020819052604090205487811161237f57808803612382565b60005b9150505b60208801516040516306608bdf60e21b81526001600160a01b038516916319822f7c9189916123bc918e91908790600401613884565b60206040518083038160008887f1935050505080156123f8575060408051601f3d908101601f191682019092526123f5918101906138a9565b60015b61242357896124086108006116c3565b6040516365c8fd4d60e01b81526004016106ce9291906138c2565b94506001600160a01b0382166124ad576001600160a01b03831660009081526020819052604090208054808911156124a7578b604051631101335b60e11b81526004016106ce9181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b88900390555b5050505095945050505050565b6001600160a01b038216600090815260016020908152604080832084821c80855292528220805484916001600160401b0383169190856124f98361358c565b909155501495945050505050565b60606000805a855160e08101516001600160a01b03811660009081526020819052604090208054939450919290919087811015612590578a604051631101335b60e11b81526004016106ce918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b8781038260000181905550600084608001519050836001600160a01b03166352b7512c828d8d602001518d6040518563ffffffff1660e01b81526004016125d993929190613884565b60006040518083038160008887f19350505050801561261a57506040513d6000823e601f3d908101601f1916820160405261261791908101906138ff565b60015b612645578b61262a6108006116c3565b6040516365c8fd4d60e01b81526004016106ce92919061397f565b9098509650805a8703111561190c578b604051631101335b60e11b81526004016106ce9181526040602082018190526027908201527f41413336206f766572207061796d6173746572566572696669636174696f6e47606082015266185cd31a5b5a5d60ca1b608082015260a00190565b600080826000036126cc57506000928392509050565b60006126d784612a4f565b9050806040015165ffffffffffff164211806126fe5750806020015165ffffffffffff1642105b905194909350915050565b6000818310612718578161271a565b825b9392505050565b6000604051828085833790209392505050565b60008080612745601482868861360d565b61274e91613637565b60601c61275f60246014878961360d565b612768916139bc565b60801c61277960346024888a61360d565b612782916139bc565b9194506001600160801b0316925060801c90509250925092565b8015610d9a578251516001600160a01b0381163b156128075784604051631101335b60e11b81526004016106ce918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b600061281b6006546001600160a01b031690565b6001600160a01b031663570e1a3686600001516040015186866040518463ffffffff1660e01b81526004016128519291906139f3565b60206040518083038160008887f1158015612870573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128959190613a07565b90506001600160a01b0381166128f75785604051631101335b60e11b81526004016106ce918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b816001600160a01b0316816001600160a01b0316146129615785604051631101335b60e11b81526004016106ce91815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b806001600160a01b03163b6000036129c45785604051631101335b60e11b81526004016106ce91815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b60006129d3601482868861360d565b6129dc91613637565b60601c9050826001600160a01b031686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160e00151604051612a3e9291906001600160a01b0392831681529116602082015260400190565b60405180910390a350505050505050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003612a8b575065ffffffffffff5b604080516060810182526001600160a01b03909316835260d09490941c602083015265ffffffffffff16928101929092525090565b604051806101000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001606081525090565b6040518060a00160405280612b446040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b8152602001612b66604051806040016040528060008152602001600081525090565b8152602001612b88604051806040016040528060008152602001600081525090565b8152602001612baa604051806040016040528060008152602001600081525090565b8152602001612bb7612c54565b905290565b6040518060a00160405280612c2f60405180610140016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b604051806040016040528060006001600160a01b03168152602001612bb7604051806040016040528060008152602001600081525090565b600060208284031215612c9e57600080fd5b813563ffffffff8116811461271a57600080fd5b60008083601f840112612cc457600080fd5b5081356001600160401b03811115612cdb57600080fd5b6020830191508360208260051b8501011115612cf657600080fd5b9250929050565b60008060008060008060608789031215612d1657600080fd5b86356001600160401b0380821115612d2d57600080fd5b612d398a838b01612cb2565b90985096506020890135915080821115612d5257600080fd5b612d5e8a838b01612cb2565b90965094506040890135915080821115612d7757600080fd5b50612d8489828a01612cb2565b979a9699509497509295939492505050565b60005b83811015612db1578181015183820152602001612d99565b50506000910152565b60008151808452612dd2816020860160208601612d96565b601f01601f19169290920160200192915050565b805182526020810151151560208301526000604082015160606040850152611faf6060850182612dba565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612e6857603f19888603018452612e56858351612de6565b94509285019290850190600101612e3a565b5092979650505050505050565b80356001600160c01b0381168114610fe457600080fd5b600060208284031215612e9e57600080fd5b61271a82612e75565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715612edf57612edf612ea7565b60405290565b60405161014081016001600160401b0381118282101715612edf57612edf612ea7565b604051601f8201601f191681016001600160401b0381118282101715612f3057612f30612ea7565b604052919050565b60006001600160401b03821115612f5157612f51612ea7565b50601f01601f191660200190565b600082601f830112612f7057600080fd5b8135612f83612f7e82612f38565b612f08565b818152846020838601011115612f9857600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114612fca57600080fd5b50565b8035610fe481612fb5565b600080600080848603610220811215612ff057600080fd5b85356001600160401b038082111561300757600080fd5b61301389838a01612f5f565b9650601f19830192506101c091508183121561302e57600080fd5b613036612ebd565b6101408085121561304657600080fd5b61304e612ee5565b945061305c60208b01612fcd565b855260408a0135602086015260608a0135604086015260808a0135606086015260a08a0135608086015260c08a013560a086015260e08a013560c08601526101006130a8818c01612fcd565b60e08701526101208b81013591870191909152908a013590850152928352610160880135602084015261018088013560408401526101a088013560608401528188013560808401529194506101e0870135918083111561310757600080fd5b505061311587828801612f5f565b94979396509394610200013593505050565b6000806020838503121561313a57600080fd5b82356001600160401b0381111561315057600080fd5b61315c85828601612cb2565b90969095509350505050565b6000610100825184526020830151602085015260408301516040850152606083015160608501526080830151608085015260a083015160a085015260c0830151151560c085015260e08301518160e086015261220c82860182612dba565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612e6857603f1988860301845261320b858351613168565b945092850192908501906001016131ef565b6000806040838503121561323057600080fd5b823561323b81612fb5565b915061324960208401612e75565b90509250929050565b6000806040838503121561326557600080fd5b823561327081612fb5565b946020939093013593505050565b6000610120828403121561329157600080fd5b50919050565b6000602082840312156132a957600080fd5b81356001600160401b038111156132bf57600080fd5b611faf8482850161327e565b60208152600061271a6020830184613168565b80516101408084528151908401526020810151610160840152604081015161018084015260608101516101a08401526080015160a06101c084015260009061332a6101e0850182612dba565b90506020830151613348602086018280518252602090810151910152565b5060408301518051606086015260208101516080860152506060830151805160a0860152602081015160c0860152506080830151610c4560e086018280516001600160a01b031682526020908101518051828401520151604090910152565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612e6857603f198886030184526133ec8583516132de565b945092850192908501906001016133d0565b60006020828403121561341057600080fd5b813561271a81612fb5565b60208152600061271a6020830184612de6565b60208152600061271a60208301846132de565b6000806000806060858703121561345757600080fd5b84356001600160401b038082111561346e57600080fd5b61347a8883890161327e565b95506020870135915061348c82612fb5565b909350604086013590808211156134a257600080fd5b818701915087601f8301126134b657600080fd5b8135818111156134c557600080fd5b8860208285010111156134d757600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4957610c496134e6565b634e487b7160e01b600052603260045260246000fd5b6000823561011e1983360301811261353c57600080fd5b9190910192915050565b6000808335601e1984360301811261355d57600080fd5b8301803591506001600160401b0382111561357757600080fd5b602001915036819003821315612cf657600080fd5b60006001820161359e5761359e6134e6565b5060010190565b634e487b7160e01b600052601260045260246000fd5b828152604060208201526000611faf6040830184612dba565b81810381811115610c4957610c496134e6565b65ffffffffffff818116838216019080821115613606576136066134e6565b5092915050565b6000808585111561361d57600080fd5b8386111561362a57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156136645780818660140360031b1b83161692505b505092915050565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b6000600386106136b257634e487b7160e01b600052602160045260246000fd5b858252608060208301526136c96080830186612dba565b6040830194909452506060015292915050565b8082028115828204841417610c4957610c496134e6565b60008261371057634e487b7160e01b600052601260045260246000fd5b500490565b6000808335601e1984360301811261372c57600080fd5b83016020810192503590506001600160401b0381111561374b57600080fd5b803603821315612cf657600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006101206137a28461379585612fcd565b6001600160a01b03169052565b602083013560208501526137b96040840184613715565b8260408701526137cc838701828461375a565b925050506137dd6060840184613715565b85830360608701526137f083828461375a565b925050506080830135608085015260a083013560a085015260c083013560c085015261381f60e0840184613715565b85830360e087015261383283828461375a565b9250505061010061384581850185613715565b8684038388015261385784828461375a565b979650505050505050565b6040815260006138756040830185613783565b90508260208301529392505050565b6060815260006138976060830186613783565b60208301949094525060400152919050565b6000602082840312156138bb57600080fd5b5051919050565b82815260606020820152600d60608201526c10504c8cc81c995d995c9d1959609a1b608082015260a060408201526000611faf60a0830184612dba565b6000806040838503121561391257600080fd5b82516001600160401b0381111561392857600080fd5b8301601f8101851361393957600080fd5b8051613947612f7e82612f38565b81815286602083850101111561395c57600080fd5b61396d826020830160208601612d96565b60209590950151949694955050505050565b82815260606020820152600d60608201526c10504cccc81c995d995c9d1959609a1b608082015260a060408201526000611faf60a0830184612dba565b6fffffffffffffffffffffffffffffffff1981358181169160108510156136645760109490940360031b84901b1690921692915050565b602081526000611faf60208301848661375a565b600060208284031215613a1957600080fd5b815161271a81612fb556fea2646970667358221220c6ad4b2b56624cba321cec929c4bdd6329f5811c936f40e8ff5cfb92ef9b433f64736f6c63430008170033608060405234801561001057600080fd5b506101f3806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063570e1a3614610030575b600080fd5b61004361003e3660046100ec565b61005f565b6040516001600160a01b03909116815260200160405180910390f35b60008061006f601482858761015e565b61007891610188565b60601c9050600061008c846014818861015e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509360209350849250905082850182875af190506000519350806100e357600093505b50505092915050565b600080602083850312156100ff57600080fd5b823567ffffffffffffffff8082111561011757600080fd5b818501915085601f83011261012b57600080fd5b81358181111561013a57600080fd5b86602082850101111561014c57600080fd5b60209290920196919550909350505050565b6000808585111561016e57600080fd5b8386111561017b57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156101b55780818660140360031b1b83161692505b50509291505056fea2646970667358221220f5d91be997c659d0ef966f0c016a41e736500c794f93ad11197e128a54287a9964736f6c63430008170033" + +export const ENTRY_POINT_V07_CREATECALL: Hex = + "0x90d8084deab30c2a37c45e8d47f49f2f7965183cb6990a98943ef94940681de360a08060405234620000825760016002556101df8181016001600160401b038111838210176200006c57829162003f2b833903906000f080156200006057608052604051613ea39081620000888239608051818181610d22015261324b0152f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe60806040526004361015610024575b361561001957600080fd5b61002233612748565b005b60003560e01c806242dc5314611b0057806301ffc9a7146119ae5780630396cb60146116765780630bd28e3b146115fa5780631b2e01b814611566578063205c2878146113d157806322cdde4c1461136b57806335567e1a146112b35780635287ce12146111a557806370a0823114611140578063765e827f14610e82578063850aaf6214610dc35780639b249f6914610c74578063b760faf914610c3a578063bb9fe6bf14610a68578063c23a5cea146107c4578063dbed18e0146101a15763fc7e286d0361000e573461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61013a61229f565b16600052600060205260a0604060002065ffffffffffff6001825492015460405192835260ff8116151560208401526dffffffffffffffffffffffffffff8160081c16604084015263ffffffff8160781c16606084015260981c166080820152f35b600080fd5b3461019c576101af36612317565b906101b86129bd565b60009160005b82811061056f57506101d08493612588565b6000805b8481106102fc5750507fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000809360005b81811061024757610240868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2613ba7565b6001600255005b6102a261025582848a612796565b73ffffffffffffffffffffffffffffffffffffffff6102766020830161282a565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a2806127d6565b906000915b8083106102b957505050600101610209565b909194976102f36102ed6001926102e78c8b6102e0826102da8e8b8d61269d565b9261265a565b5191613597565b90612409565b99612416565b950191906102a7565b6020610309828789612796565b61031f61031682806127d6565b9390920161282a565b9160009273ffffffffffffffffffffffffffffffffffffffff8091165b8285106103505750505050506001016101d4565b909192939561037f83610378610366848c61265a565b516103728b898b61269d565b856129f6565b9290613dd7565b9116840361050a576104a5576103958491613dd7565b9116610440576103b5576103aa600191612416565b96019392919061033c565b60a487604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608489604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b61057a818487612796565b9361058585806127d6565b919095602073ffffffffffffffffffffffffffffffffffffffff6105aa82840161282a565b1697600192838a1461076657896105da575b5050505060019293949550906105d191612409565b939291016101be565b8060406105e892019061284b565b918a3b1561019c57929391906040519485937f2dd8113300000000000000000000000000000000000000000000000000000000855288604486016040600488015252606490818601918a60051b8701019680936000915b8c83106106e657505050505050838392610684927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8560009803016024860152612709565b03818a5afa90816106d7575b506106c657602486604051907f86a9f7500000000000000000000000000000000000000000000000000000000082526004820152fd5b93945084936105d1600189806105bc565b6106e0906121bd565b88610690565b91939596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c908a9294969a0301865288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18336030181121561019c57836107538793858394016128ec565b9a0196019301909189979695949261063f565b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b3461019c576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576107fc61229f565b33600052600082526001604060002001908154916dffffffffffffffffffffffffffff8360081c16928315610a0a5765ffffffffffff8160981c1680156109ac57421061094e5760009373ffffffffffffffffffffffffffffffffffffffff859485947fffffffffffffff000000000000000000000000000000000000000000000000ff86951690556040517fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda33391806108da8786836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2165af16108e8612450565b50156108f057005b606490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b3461019c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c573360005260006020526001604060002001805463ffffffff8160781c16908115610bdc5760ff1615610b7e5765ffffffffffff908142160191818311610b4f5780547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001678ffffffffffff00000000000000000000000000000000000000609885901b161790556040519116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a2005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610022610c6f61229f565b612748565b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043567ffffffffffffffff811161019c576020610cc8610d1b9236906004016122c2565b919073ffffffffffffffffffffffffffffffffffffffff9260405194859283927f570e1a360000000000000000000000000000000000000000000000000000000084528560048501526024840191612709565b03816000857f0000000000000000000000000000000000000000000000000000000000000000165af1908115610db757602492600092610d86575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b610da991925060203d602011610db0575b610da181836121ed565b8101906126dd565b9083610d56565b503d610d97565b6040513d6000823e3d90fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610dfa61229f565b60243567ffffffffffffffff811161019c57600091610e1e839236906004016122c2565b90816040519283928337810184815203915af4610e39612450565b90610e7e6040519283927f99410554000000000000000000000000000000000000000000000000000000008452151560048401526040602484015260448301906123c6565b0390fd5b3461019c57610e9036612317565b610e9b9291926129bd565b610ea483612588565b60005b848110610f1c57506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000915b858310610eec576102408585613ba7565b909193600190610f12610f0087898761269d565b610f0a888661265a565b519088613597565b0194019190610edb565b610f47610f40610f2e8385979561265a565b51610f3a84898761269d565b846129f6565b9190613dd7565b73ffffffffffffffffffffffffffffffffffffffff929183166110db5761107657610f7190613dd7565b911661101157610f8657600101929092610ea7565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608483604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61118c61229f565b1660005260006020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff6111f161229f565b6000608060405161120181612155565b828152826020820152826040820152826060820152015216600052600060205260a06040600020608060405161123681612155565b6001835493848352015490602081019060ff8316151582526dffffffffffffffffffffffffffff60408201818560081c16815263ffffffff936060840193858760781c16855265ffffffffffff978891019660981c1686526040519788525115156020880152511660408601525116606084015251166080820152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760206112ec61229f565b73ffffffffffffffffffffffffffffffffffffffff6113096122f0565b911660005260018252604060002077ffffffffffffffffffffffffffffffffffffffffffffffff821660005282526040600020547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b3461019c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60208136011261019c576004359067ffffffffffffffff821161019c5761012090823603011261019c576113c9602091600401612480565b604051908152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761140861229f565b60243590336000526000602052604060002090815491828411611508576000808573ffffffffffffffffffffffffffffffffffffffff8295839561144c848a612443565b90556040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af16114a2612450565b50156114aa57005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761159d61229f565b73ffffffffffffffffffffffffffffffffffffffff6115ba6122f0565b9116600052600160205277ffffffffffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043577ffffffffffffffffffffffffffffffffffffffffffffffff811680910361019c5733600052600160205260406000209060005260205260406000206116728154612416565b9055005b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043563ffffffff9182821680920361019c5733600052600081526040600020928215611950576001840154908160781c1683106118f2576116f86dffffffffffffffffffffffffffff9182349160081c16612409565b93841561189457818511611836579065ffffffffffff61180592546040519061172082612155565b8152848101926001845260408201908816815260608201878152600160808401936000855233600052600089526040600020905181550194511515917fffffffffffffffffffffffffff0000000000000000000000000000000000000060ff72ffffffff0000000000000000000000000000006effffffffffffffffffffffffffff008954945160081b16945160781b1694169116171717835551167fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff78ffffffffffff0000000000000000000000000000000000000083549260981b169116179055565b6040519283528201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a2005b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361019c57807f60fc6b6e0000000000000000000000000000000000000000000000000000000060209214908115611ad6575b8115611aac575b8115611a82575b8115611a58575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611a4d565b7f3e84f0210000000000000000000000000000000000000000000000000000000081149150611a46565b7fcf28ef970000000000000000000000000000000000000000000000000000000081149150611a3f565b7f915074d80000000000000000000000000000000000000000000000000000000081149150611a38565b3461019c576102007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5767ffffffffffffffff60043581811161019c573660238201121561019c57611b62903690602481600401359101612268565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101c0811261019c5761014060405191611b9e83612155565b1261019c5760405192611bb0846121a0565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361019c578452602093604435858201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c08201526101043573ffffffffffffffffffffffffffffffffffffffff8116810361019c5760e08201526101243561010082015261014435610120820152825261016435848301526101843560408301526101a43560608301526101c43560808301526101e43590811161019c57611c7c9036906004016122c2565b905a3033036120f7578351606081015195603f5a0260061c61271060a0840151890101116120ce5760009681519182611ff0575b5050505090611cca915a9003608085015101923691612268565b925a90600094845193611cdc85613ccc565b9173ffffffffffffffffffffffffffffffffffffffff60e0870151168015600014611ea957505073ffffffffffffffffffffffffffffffffffffffff855116935b5a9003019360a06060820151910151016080860151850390818111611e95575b50508302604085015192818410600014611dce5750506003811015611da157600203611d79576113c99293508093611d7481613d65565b613cf6565b5050507fdeadaa51000000000000000000000000000000000000000000000000000000008152fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b81611dde92979396940390613c98565b506003841015611e6857507f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f60808683015192519473ffffffffffffffffffffffffffffffffffffffff865116948873ffffffffffffffffffffffffffffffffffffffff60e0890151169701519160405192835215898301528760408301526060820152a46113c9565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6064919003600a0204909301928780611d3d565b8095918051611eba575b5050611d1d565b6003861015611fc1576002860315611eb35760a088015190823b1561019c57600091611f2491836040519586809581947f7c627b210000000000000000000000000000000000000000000000000000000083528d60048401526080602484015260848301906123c6565b8b8b0260448301528b60648301520393f19081611fad575b50611fa65787893d610800808211611f9e575b506040519282828501016040528184528284013e610e7e6040519283927fad7954bc000000000000000000000000000000000000000000000000000000008452600484015260248301906123c6565b905083611f4f565b8980611eb3565b611fb89199506121bd565b6000978a611f3c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91600092918380938c73ffffffffffffffffffffffffffffffffffffffff885116910192f115612023575b808080611cb0565b611cca929195503d6108008082116120c6575b5060405190888183010160405280825260008983013e805161205f575b5050600194909161201b565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20188870151918973ffffffffffffffffffffffffffffffffffffffff8551169401516120bc604051928392835260408d84015260408301906123c6565b0390a38680612053565b905088612036565b877fdeaddead000000000000000000000000000000000000000000000000000000006000526000fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b60a0810190811067ffffffffffffffff82111761217157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610140810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157604052565b6060810190811067ffffffffffffffff82111761217157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926122748261222e565b9161228260405193846121ed565b82948184528183011161019c578281602093846000960137010152565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9181601f8401121561019c5782359167ffffffffffffffff831161019c576020838186019501011161019c57565b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261019c5760043567ffffffffffffffff9283821161019c578060238301121561019c57816004013593841161019c5760248460051b8301011161019c57602401919060243573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b60005b8381106123b65750506000910152565b81810151838201526020016123a6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612402815180928187528780880191016123a3565b0116010190565b91908201809211610b4f57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b4f5760010190565b91908203918211610b4f57565b3d1561247b573d906124618261222e565b9161246f60405193846121ed565b82523d6000602084013e565b606090565b604061248e8183018361284b565b90818351918237206124a3606084018461284b565b90818451918237209260c06124bb60e083018361284b565b908186519182372091845195602087019473ffffffffffffffffffffffffffffffffffffffff833516865260208301358789015260608801526080870152608081013560a087015260a081013582870152013560e08501526101009081850152835261012083019167ffffffffffffffff918484108385111761217157838252845190206101408501908152306101608601524661018086015260608452936101a00191821183831017612171575251902090565b67ffffffffffffffff81116121715760051b60200190565b9061259282612570565b6040906125a260405191826121ed565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06125d08295612570565b019160005b8381106125e25750505050565b60209082516125f081612155565b83516125fb816121a0565b600081526000849181838201528187820152816060818184015260809282848201528260a08201528260c08201528260e082015282610100820152826101208201528652818587015281898701528501528301528286010152016125d5565b805182101561266e5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561266e5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18136030182121561019c570190565b9081602091031261019c575173ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4602073ffffffffffffffffffffffffffffffffffffffff61278a3485613c98565b936040519485521692a2565b919081101561266e5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18136030182121561019c570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c57602001918160051b3603831361019c57565b3573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c5760200191813603831361019c57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561019c57016020813591019167ffffffffffffffff821161019c57813603831361019c57565b61012091813573ffffffffffffffffffffffffffffffffffffffff811680910361019c576129626129476129ba9561299b93855260208601356020860152612937604087018761289c565b9091806040880152860191612709565b612954606086018661289c565b908583036060870152612709565b6080840135608084015260a084013560a084015260c084013560c084015261298d60e085018561289c565b9084830360e0860152612709565b916129ac610100918281019061289c565b929091818503910152612709565b90565b60028054146129cc5760028055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b926000905a93805194843573ffffffffffffffffffffffffffffffffffffffff811680910361019c5786526020850135602087015260808501356fffffffffffffffffffffffffffffffff90818116606089015260801c604088015260a086013560c088015260c086013590811661010088015260801c610120870152612a8060e086018661284b565b801561357b576034811061351d578060141161019c578060241161019c5760341161019c57602481013560801c60a0880152601481013560801c60808801523560601c60e08701525b612ad285612480565b60208301526040860151946effffffffffffffffffffffffffffff8660c08901511760608901511760808901511760a0890151176101008901511761012089015117116134bf57604087015160608801510160808801510160a08801510160c0880151016101008801510296835173ffffffffffffffffffffffffffffffffffffffff81511690612b66604085018561284b565b806131e4575b505060e0015173ffffffffffffffffffffffffffffffffffffffff1690600082156131ac575b6020612bd7918b828a01516000868a604051978896879586937f19822f7c00000000000000000000000000000000000000000000000000000000855260048501613db5565b0393f160009181613178575b50612c8b573d8c610800808311612c83575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141323320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612bf5565b9a92939495969798999a91156130f2575b509773ffffffffffffffffffffffffffffffffffffffff835116602084015190600052600160205260406000208160401c60005260205267ffffffffffffffff604060002091825492612cee84612416565b9055160361308d575a8503116130285773ffffffffffffffffffffffffffffffffffffffff60e0606093015116612d42575b509060a09184959697986040608096015260608601520135905a900301910152565b969550505a9683519773ffffffffffffffffffffffffffffffffffffffff60e08a01511680600052600060205260406000208054848110612fc3576080612dcd9a9b9c600093878094039055015192602089015183604051809d819582947f52b7512c0000000000000000000000000000000000000000000000000000000084528c60048501613db5565b039286f1978860009160009a612f36575b50612e86573d8b610800808311612e7e575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141333320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612df0565b9991929394959697989998925a900311612eab57509096959094939291906080612d20565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602760448201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760648201527f61734c696d6974000000000000000000000000000000000000000000000000006084820152fd5b915098503d90816000823e612f4b82826121ed565b604081838101031261019c5780519067ffffffffffffffff821161019c57828101601f83830101121561019c578181015191612f868361222e565b93612f9460405195866121ed565b838552820160208483850101011161019c57602092612fba9184808701918501016123a3565b01519838612dde565b60848b604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b608490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b600052600060205260406000208054808c11613113578b9003905538612c9c565b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152fd5b9091506020813d6020116131a4575b81613194602093836121ed565b8101031261019c57519038612be3565b3d9150613187565b508060005260006020526040600020548a81116000146131d75750612bd7602060005b915050612b92565b6020612bd7918c036131cf565b833b61345a57604088510151602060405180927f570e1a360000000000000000000000000000000000000000000000000000000082528260048301528160008161323260248201898b612709565b039273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690f1908115610db75760009161343b575b5073ffffffffffffffffffffffffffffffffffffffff811680156133d6578503613371573b1561330c5760141161019c5773ffffffffffffffffffffffffffffffffffffffff9183887fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d604060e0958787602086015195510151168251913560601c82526020820152a391612b6c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848e604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848f604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152fd5b613454915060203d602011610db057610da181836121ed565b3861327c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b5050600060e087015260006080870152600060a0870152612ac9565b9092915a906060810151916040928351967fffffffff00000000000000000000000000000000000000000000000000000000886135d7606084018461284b565b600060038211613b9f575b7f8dd7712f0000000000000000000000000000000000000000000000000000000094168403613a445750505061379d6000926136b292602088015161363a8a5193849360208501528b602485015260648401906128ec565b90604483015203906136727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928381018352826121ed565b61379189519485927e42dc5300000000000000000000000000000000000000000000000000000000602085015261020060248501526102248401906123c6565b613760604484018b60806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152876123c6565b039081018352826121ed565b6020918183809351910182305af1600051988652156137bf575b505050505050565b909192939495965060003d8214613a3a575b7fdeaddead00000000000000000000000000000000000000000000000000000000810361385b57608487878051917f220266b600000000000000000000000000000000000000000000000000000000835260048301526024820152600f60448201527f41413935206f7574206f662067617300000000000000000000000000000000006064820152fd5b7fdeadaa510000000000000000000000000000000000000000000000000000000091929395949650146000146138c55750506138a961389e6138b8935a90612443565b608085015190612409565b9083015183611d748295613d65565b905b3880808080806137b7565b909261395290828601518651907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479273ffffffffffffffffffffffffffffffffffffffff9580878551169401516139483d610800808211613a32575b508a519084818301018c5280825260008583013e8a805194859485528401528a8301906123c6565b0390a35a90612443565b916139636080860193845190612409565b926000905a94829488519761397789613ccc565b948260e08b0151168015600014613a1857505050875116955b5a9003019560a06060820151910151019051860390818111613a04575b5050840290850151928184106000146139de57505080611e68575090816139d89293611d7481613d65565b906138ba565b6139ee9082849397950390613c98565b50611e68575090826139ff92613cf6565b6139d8565b6064919003600a02049094019338806139ad565b90919892509751613a2a575b50613990565b955038613a24565b905038613920565b8181803e516137d1565b613b97945082935090613a8c917e42dc53000000000000000000000000000000000000000000000000000000006020613b6b9501526102006024860152610224850191612709565b613b3a604484018860806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152846123c6565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018952886121ed565b60008761379d565b5081356135e2565b73ffffffffffffffffffffffffffffffffffffffff168015613c3a57600080809381935af1613bd4612450565b5015613bdc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff166000526000602052613cc66040600020918254612409565b80915590565b610120610100820151910151808214613cf257480180821015613ced575090565b905090565b5090565b9190917f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f6080602083015192519473ffffffffffffffffffffffffffffffffffffffff946020868851169660e089015116970151916040519283526000602084015260408301526060820152a4565b60208101519051907f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e60208073ffffffffffffffffffffffffffffffffffffffff855116940151604051908152a3565b613dcd604092959493956060835260608301906128ec565b9460208201520152565b8015613e6457600060408051613dec816121d1565b828152826020820152015273ffffffffffffffffffffffffffffffffffffffff811690604065ffffffffffff91828160a01c16908115613e5c575b60d01c92825191613e37836121d1565b8583528460208401521691829101524211908115613e5457509091565b905042109091565b839150613e27565b5060009060009056fea2646970667358221220b094fd69f04977ae9458e5ba422d01cd2d20dbcfca0992ff37f19aa07deec25464736f6c6343000817003360808060405234610016576101c3908161001c8239f35b600080fdfe6080600436101561000f57600080fd5b6000803560e01c63570e1a361461002557600080fd5b3461018a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018a576004359167ffffffffffffffff9081841161018657366023850112156101865783600401358281116101825736602482870101116101825780601411610182577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec810192808411610155577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81600b8501160116830190838210908211176101555792846024819482600c60209a968b9960405286845289840196603889018837830101525193013560601c5af1908051911561014d575b5073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b90503861012e565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8380fd5b8280fd5b80fdfea26469706673582212207adef8895ad3393b02fab10a111d85ea80ff35366aa43995f4ea20e67f29200664736f6c63430008170033" diff --git a/src/test/executables.ts b/src/test/executables.ts new file mode 100644 index 000000000..aae062216 --- /dev/null +++ b/src/test/executables.ts @@ -0,0 +1,23 @@ +import { execa } from "execa" + +const cwd = "./node_modules/nexus" + +export const init = async () => + await execa({ cwd })`yarn install --frozen-lockfile` + +export const cleanOne = async (rpcPort: number) => + await execa({ cwd })`rm -rf ./deployments/anvil-${rpcPort}` + +export const deploy = async (rpcPort: number) => { + await cleanOne(rpcPort) + return await execa({ + cwd, + env: { + HH_RPC_URL: `http://localhost:${rpcPort}`, + HH_CHAIN_NAME: `anvil-${rpcPort}`, + HH_CHAIN_ID: rpcPort.toString() + } + })`yarn deploy:hardhat --network anvil-${rpcPort}` +} + +export const clean = async () => await execa({ cwd })`rm -rf ./deployments` diff --git a/src/test/globalSetup.ts b/src/test/globalSetup.ts new file mode 100644 index 000000000..ac4620817 --- /dev/null +++ b/src/test/globalSetup.ts @@ -0,0 +1,26 @@ +import { + type NetworkConfig, + type NetworkConfigWithBundler, + initLocalhostNetwork +} from "./testUtils" + +let globalConfig: NetworkConfigWithBundler +// @ts-ignore +export const setup = async ({ provide }) => { + globalConfig = await initLocalhostNetwork() + const { bundlerInstance, instance, ...serializeableConfig } = globalConfig + provide("globalNetwork", serializeableConfig) +} + +export const teardown = async () => { + await Promise.all([ + globalConfig.instance.stop(), + globalConfig.bundlerInstance.stop() + ]) +} + +declare module "vitest" { + export interface ProvidedContext { + globalNetwork: NetworkConfig + } +} diff --git a/src/test/playground.test.ts b/src/test/playground.test.ts new file mode 100644 index 000000000..204d680df --- /dev/null +++ b/src/test/playground.test.ts @@ -0,0 +1,170 @@ +import { + http, + type Address, + type Chain, + type PrivateKeyAccount, + type PublicClient, + type WalletClient, + createPublicClient, + createWalletClient +} from "viem" +import { beforeAll, describe, expect, test } from "vitest" +import { + biconomyPaymasterContext, + createBicoPaymasterClient +} from "../sdk/clients/createBicoPaymasterClient" +import { + type NexusClient, + createNexusClient +} from "../sdk/clients/createNexusClient" +import { playgroundTrue, toNetwork } from "./testSetup" +import type { NetworkConfig } from "./testUtils" + +// Remove the following lines to use the default factory and validator addresses +// These are relevant only for now on base sopelia chain and are likely to change +const k1ValidatorAddress = "0x663E709f60477f07885230E213b8149a7027239B" +const factoryAddress = "0x887Ca6FaFD62737D0E79A2b8Da41f0B15A864778" + +describe.skipIf(!playgroundTrue)("playground", () => { + let network: NetworkConfig + // Nexus Config + let chain: Chain + let bundlerUrl: string + let paymasterUrl: undefined | string + let walletClient: WalletClient + + // Test utils + let publicClient: PublicClient // testClient not available on public testnets + let account: PrivateKeyAccount + let recipientAddress: Address + let nexusClient: NexusClient + let nexusAccountAddress: Address + + beforeAll(async () => { + network = await toNetwork("PUBLIC_TESTNET") + + chain = network.chain + bundlerUrl = network.bundlerUrl + paymasterUrl = network.paymasterUrl + account = network.account as PrivateKeyAccount + + recipientAddress = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" // vitalik.eth + + walletClient = createWalletClient({ + account, + chain, + transport: http() + }) + + publicClient = createPublicClient({ + chain, + transport: http() + }) + }) + + test("should have factory and k1Validator deployed", async () => { + const byteCodes = await Promise.all([ + publicClient.getCode({ + address: k1ValidatorAddress + }), + publicClient.getCode({ + address: factoryAddress + }) + ]) + + expect(byteCodes.every(Boolean)).toBeTruthy() + }) + + test("should init the smart account", async () => { + nexusClient = await createNexusClient({ + holder: account, + chain, + transport: http(), + bundlerTransport: http(bundlerUrl), + k1ValidatorAddress, + factoryAddress + }) + }) + + test("should log relevant addresses", async () => { + nexusAccountAddress = await nexusClient.account.getCounterFactualAddress() + console.log({ nexusAccountAddress }) + }) + + test("should check balances and top up relevant addresses", async () => { + const [ownerBalance, smartAccountBalance] = await Promise.all([ + publicClient.getBalance({ + address: account.address + }), + publicClient.getBalance({ + address: nexusAccountAddress + }) + ]) + + const balancesAreOfCorrectType = [ownerBalance, smartAccountBalance].every( + (balance) => typeof balance === "bigint" + ) + if (smartAccountBalance === 0n) { + const hash = await walletClient.sendTransaction({ + chain, + account, + to: nexusAccountAddress, + value: 1000000000000000000n + }) + const receipt = await publicClient.waitForTransactionReceipt({ hash }) + console.log({ receipt }) + } + expect(balancesAreOfCorrectType).toBeTruthy() + }) + + test("should send some native token", async () => { + const balanceBefore = await publicClient.getBalance({ + address: recipientAddress + }) + const hash = await nexusClient.sendTransaction({ + calls: [ + { + to: recipientAddress, + value: 1n + } + ], + preVerificationGas: 800000000n + }) + const { status } = await publicClient.waitForTransactionReceipt({ hash }) + const balanceAfter = await publicClient.getBalance({ + address: recipientAddress + }) + expect(status).toBe("success") + expect(balanceAfter - balanceBefore).toBe(1n) + }) + + test("should send some native token using the paymaster", async () => { + if (!paymasterUrl) { + console.log("No paymaster url provided") + return + } + + nexusClient = await createNexusClient({ + holder: account, + chain, + transport: http(), + bundlerTransport: http(bundlerUrl), + k1ValidatorAddress, + factoryAddress, + paymaster: createBicoPaymasterClient({ + paymasterUrl + }), + paymasterContext: biconomyPaymasterContext + }) + expect(async () => + nexusClient.sendTransaction({ + calls: [ + { + to: account.address, + value: 1n + } + ] + }) + ).rejects.toThrow() + }) +}) diff --git a/src/test/testSetup.ts b/src/test/testSetup.ts new file mode 100644 index 000000000..dd9813f80 --- /dev/null +++ b/src/test/testSetup.ts @@ -0,0 +1,59 @@ +import { inject, test } from "vitest" +import { + type FundedTestClients, + type NetworkConfig, + type NetworkConfigWithBundler, + initLocalhostNetwork, + initTestnetNetwork, + toFundedTestClients +} from "./testUtils" + +export type NetworkConfigWithTestClients = NetworkConfigWithBundler & { + fundedTestClients: FundedTestClients +} + +export const localhostTest = test.extend<{ + config: NetworkConfigWithTestClients +}>({ + // biome-ignore lint/correctness/noEmptyPattern: Needed in vitest :/ + config: async ({}, use) => { + const testNetwork = await initLocalhostNetwork() + const fundedTestClients = await toFundedTestClients({ + chain: testNetwork.chain, + bundlerUrl: testNetwork.bundlerUrl + }) + await use({ ...testNetwork, fundedTestClients }) + await Promise.all([ + testNetwork.instance.stop(), + testNetwork.bundlerInstance.stop() + ]) + } +}) + +export const testnetTest = test.extend<{ + config: NetworkConfig +}>({ + // biome-ignore lint/correctness/noEmptyPattern: Needed in vitest :/ + config: async ({}, use) => { + const testNetwork = await toNetwork("PUBLIC_TESTNET") + await use(testNetwork) + } +}) + +export type TestFileNetworkType = + | "FILE_LOCALHOST" + | "COMMON_LOCALHOST" + | "PUBLIC_TESTNET" + +export const toNetwork = async ( + networkType: TestFileNetworkType = "FILE_LOCALHOST" +): Promise => + await (networkType === "COMMON_LOCALHOST" + ? // @ts-ignore + inject("globalNetwork") + : networkType === "FILE_LOCALHOST" + ? initLocalhostNetwork() + : initTestnetNetwork()) + +export const playgroundTrue = process.env.RUN_PLAYGROUND === "true" +export const paymasterTruthy = !!process.env.PAYMASTER_URL diff --git a/src/test/testUtils.ts b/src/test/testUtils.ts new file mode 100644 index 000000000..e70dd5e53 --- /dev/null +++ b/src/test/testUtils.ts @@ -0,0 +1,487 @@ +import { config } from "dotenv" +import getPort from "get-port" +// @ts-ignore +import { alto, anvil } from "prool/instances" +import { + http, + type Account, + type Address, + type Chain, + type Hex, + type PrivateKeyAccount, + createPublicClient, + createTestClient, + createWalletClient, + encodeAbiParameters, + encodePacked, + keccak256, + parseAbi, + parseAbiParameters, + publicActions, + toBytes, + walletActions, + zeroAddress +} from "viem" +import { createBundlerClient } from "viem/account-abstraction" +import { mnemonicToAccount, privateKeyToAccount } from "viem/accounts" +import contracts from "../sdk/__contracts" +import { getChain, getCustomChain } from "../sdk/account/utils" +import { Logger } from "../sdk/account/utils/Logger" +import { + type NexusClient, + createNexusClient +} from "../sdk/clients/createNexusClient" + +import { + ENTRY_POINT_SIMULATIONS_CREATECALL, + ENTRY_POINT_V07_CREATECALL, + TEST_CONTRACTS +} from "./callDatas" +import * as hardhatExec from "./executables" + +config() + +type AnvilInstance = ReturnType +type BundlerInstance = ReturnType +type BundlerDto = { + bundlerInstance: BundlerInstance + bundlerUrl: string + bundlerPort: number +} +export type AnvilDto = { + rpcUrl: string + rpcPort: number + chain: Chain + instance: AnvilInstance +} +export type NetworkConfigWithBundler = AnvilDto & BundlerDto +export type NetworkConfig = Omit< + NetworkConfigWithBundler, + "instance" | "bundlerInstance" +> & { + account?: PrivateKeyAccount + paymasterUrl?: string +} +export const pKey = + "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" // This is a publicly available private key meant only for testing only + +export const getTestAccount = ( + addressIndex = 0 +): ReturnType => { + return mnemonicToAccount( + "test test test test test test test test test test test junk", + { + addressIndex + } + ) +} + +const allInstances = new Map() + +export const killAllNetworks = () => + killNetwork(Array.from(allInstances.keys())) + +export const killNetwork = (ids: number[]) => + Promise.all( + ids.map(async (id) => { + const instance = allInstances.get(id) + if (instance) { + await instance.stop() + allInstances.delete(id) + } + }) + ) + +export const initTestnetNetwork = async (): Promise => { + const privateKey = process.env.PRIVATE_KEY + const chainId = process.env.CHAIN_ID + const rpcUrl = process.env.RPC_URL //Optional, taken from chain (using chainId) if not provided + const _bundlerUrl = process.env.BUNDLER_URL // Optional, taken from chain (using chainId) if not provided + const paymasterUrl = process.env.PAYMASTER_URL // Optional + + let chain: Chain + + if (!privateKey) throw new Error("Missing env var PRIVATE_KEY") + if (!chainId) throw new Error("Missing env var CHAIN_ID") + if (!paymasterUrl) console.log("Missing env var PAYMASTER_URL") + + try { + chain = getChain(+chainId) + } catch (e) { + if (!rpcUrl) throw new Error("Missing env var RPC_URL") + chain = getCustomChain("Custom Chain", +chainId, rpcUrl) + } + const bundlerUrl = _bundlerUrl ?? getBundlerUrl(+chainId) + + return { + rpcUrl: chain.rpcUrls.default.http[0], + rpcPort: 0, + chain, + bundlerUrl, + paymasterUrl, + bundlerPort: 0, + account: privateKeyToAccount( + privateKey?.startsWith("0x") ? (privateKey as Hex) : `0x${privateKey}` + ) + } +} + +export const initLocalhostNetwork = + async (): Promise => { + const configuredNetwork = await initAnvilPayload() + const bundlerConfig = await initBundlerInstance({ + rpcUrl: configuredNetwork.rpcUrl + }) + await ensureBundlerIsReady( + bundlerConfig.bundlerUrl, + getTestChainFromPort(configuredNetwork.rpcPort) + ) + allInstances.set( + configuredNetwork.instance.port, + configuredNetwork.instance + ) + allInstances.set( + bundlerConfig.bundlerInstance.port, + bundlerConfig.bundlerInstance + ) + return { ...configuredNetwork, ...bundlerConfig } + } + +export type MasterClient = ReturnType +export const toTestClient = (chain: Chain, account: Account) => + createTestClient({ + mode: "anvil", + chain, + account, + transport: http() + }) + .extend(publicActions) + .extend(walletActions) + +export const toBundlerInstance = async ({ + rpcUrl, + bundlerPort +}: { + rpcUrl: string + bundlerPort: number +}): Promise => { + const instance = alto({ + entrypoints: [contracts.entryPoint.address], + rpcUrl: rpcUrl, + executorPrivateKeys: [pKey], + entrypointSimulationContract: contracts.entryPointSimulations.address, + safeMode: false, + port: bundlerPort + }) + await instance.start() + return instance +} + +export const ensureBundlerIsReady = async ( + bundlerUrl: string, + chain: Chain +) => { + const bundler = await createBundlerClient({ + chain, + transport: http(bundlerUrl) + }) + + while (true) { + try { + await bundler.getChainId() + return + } catch { + await new Promise((resolve) => setTimeout(resolve, 1000)) + } + } +} + +export const toConfiguredAnvil = async ({ + rpcPort +}: { rpcPort: number }): Promise => { + const instance = anvil({ + hardfork: "Paris", + chainId: rpcPort, + port: rpcPort, + codeSizeLimit: 1000000000000 + // forkUrl: "https://base-sepolia.gateway.tenderly.co/2oxlNZ7oiNCUpXzrWFuIHx" + }) + await instance.start() + await initDeployments(rpcPort) + return instance +} + +export const initDeployments = async (rpcPort: number) => { + // Hardhat deployment of nexus repo: + console.log( + `using hardhat to deploy nexus contracts to http://localhost:${rpcPort}` + ) + await hardhatExec.init() + await hardhatExec.clean() + await hardhatExec.deploy(rpcPort) + console.log("hardhat deployment complete.") + + // Hardcoded bytecode deployment of contracts using setCode: + console.log("setting bytecode with hardcoded calldata.") + const chain = getTestChainFromPort(rpcPort) + const account = getTestAccount() + const testClient = toTestClient(chain, account) + + // Dynamic bytecode deployment of contracts using setCode: + console.log("setting bytecode with dynamic calldata from a testnet") + await setByteCodeHardcoded(testClient) + await setByteCodeDynamic(testClient, TEST_CONTRACTS) + + console.log("bytecode deployment complete.") + console.log("") +} + +const portOptions = { exclude: [] as number[] } +export const initAnvilPayload = async (): Promise => { + const rpcPort = await getPort(portOptions) + portOptions.exclude.push(rpcPort) + const rpcUrl = `http://localhost:${rpcPort}` + const chain = getTestChainFromPort(rpcPort) + const instance = await toConfiguredAnvil({ rpcPort }) + return { rpcUrl, chain, instance, rpcPort } +} + +export const initBundlerInstance = async ({ + rpcUrl +}: { rpcUrl: string }): Promise => { + const bundlerPort = await getPort(portOptions) + portOptions.exclude.push(bundlerPort) + const bundlerUrl = `http://localhost:${bundlerPort}` + const bundlerInstance = await toBundlerInstance({ rpcUrl, bundlerPort }) + return { bundlerInstance, bundlerUrl, bundlerPort } +} +export const getBalance = ( + testClient: MasterClient, + owner: Hex, + tokenAddress?: Hex +): Promise => { + if (!tokenAddress) { + return testClient.getBalance({ address: owner }) + } + return testClient.readContract({ + address: tokenAddress, + abi: parseAbi([ + "function balanceOf(address owner) public view returns (uint256 balance)" + ]), + functionName: "balanceOf", + args: [owner] + }) as Promise +} + +export const nonZeroBalance = async ( + testClient: MasterClient, + address: Hex, + tokenAddress?: Hex +) => { + const balance = await getBalance(testClient, address, tokenAddress) + if (balance > BigInt(0)) return + throw new Error( + `Insufficient balance ${ + tokenAddress ? `of token ${tokenAddress}` : "of native token" + } during test setup of owner: ${address}` + ) +} + +export type FundedTestClients = Awaited> +export const toFundedTestClients = async ({ + chain, + bundlerUrl +}: { chain: Chain; bundlerUrl: string }) => { + const account = getTestAccount(2) + const recipientAccount = getTestAccount(3) + + const walletClient = createWalletClient({ + account, + chain, + transport: http() + }) + + const recipientWalletClient = createWalletClient({ + account: recipientAccount, + chain, + transport: http() + }) + + const testClient = toTestClient(chain, getTestAccount()) + + const nexus = await createNexusClient({ + holder: account, + transport: http(), + bundlerTransport: http(bundlerUrl), + chain + }) + + const smartAccountAddress = await nexus.account.getAddress() + await fundAndDeployClients(testClient, [nexus]) + + return { + account, + recipientAccount, + walletClient, + recipientWalletClient, + testClient, + nexus, + smartAccountAddress + } +} + +export const fundAndDeployClients = async ( + testClient: MasterClient, + nexusClients: NexusClient[] +) => { + return await Promise.all( + nexusClients.map((nexusClient) => + fundAndDeploySingleClient(testClient, nexusClient) + ) + ) +} + +export const fundAndDeploySingleClient = async ( + testClient: MasterClient, + nexusClient: NexusClient +) => { + try { + const accountAddress = await nexusClient.account.getAddress() + await topUp(testClient, accountAddress) + + const hash = await nexusClient.sendTransaction({ + calls: [ + { + to: zeroAddress, + value: 0n + } + ] + }) + const { status, transactionHash } = + await testClient.waitForTransactionReceipt({ + hash + }) + + if (status !== "success") { + throw new Error("Failed to deploy smart account") + } + return transactionHash + } catch (e) { + console.error(`Error initializing smart account: ${e}`) + return Promise.resolve() + } +} + +export const safeTopUp = async ( + testClient: MasterClient, + recipient: Hex, + amount = 100000000000000000000n, + token?: Hex +) => { + try { + return await topUp(testClient, recipient, amount, token) + } catch (error) { + Logger.error(`Error topping up account: ${error}`) + } +} + +export const topUp = async ( + testClient: MasterClient, + recipient: Hex, + amount = 100000000000000000000n, + token?: Hex +) => { + const balanceOfRecipient = await getBalance(testClient, recipient, token) + + if (balanceOfRecipient > amount) { + Logger.log( + `balanceOfRecipient (${recipient}) already has enough ${ + token ?? "native token" + } (${balanceOfRecipient}) during safeTopUp` + ) + return await Promise.resolve() + } + + Logger.log(`topping up (${recipient}): (${balanceOfRecipient}).`) + + if (token) { + const hash = await testClient.writeContract({ + address: token, + abi: parseAbi([ + "function transfer(address recipient, uint256 amount) external" + ]), + functionName: "transfer", + args: [recipient, amount] + }) + return await testClient.waitForTransactionReceipt({ hash }) + } + const hash = await testClient.sendTransaction({ + to: recipient, + value: amount + }) + return await testClient.waitForTransactionReceipt({ hash }) +} + +export const getBundlerUrl = (chainId: number) => + `https://bundler.biconomy.io/api/v3/${chainId}/nJPK7B3ru.dd7f7861-190d-41bd-af80-6877f74b8f14` + +const getTestChainFromPort = (port: number): Chain => + getCustomChain(`Anvil-${port}`, port, `http://localhost:${port}`, "") + +const setByteCodeHardcoded = async ( + testClient: MasterClient +): Promise => { + const DETERMINISTIC_DEPLOYER = "0x4e59b44847b379578588920ca78fbf26c0b4956c" + + const entrypointSimulationHash = await testClient.sendTransaction({ + to: DETERMINISTIC_DEPLOYER, + data: ENTRY_POINT_SIMULATIONS_CREATECALL, + gas: 15_000_000n + }) + + const entrypointHash = await testClient.sendTransaction({ + to: DETERMINISTIC_DEPLOYER, + data: ENTRY_POINT_V07_CREATECALL, + gas: 15_000_000n + }) + + await Promise.all([ + testClient.waitForTransactionReceipt({ hash: entrypointSimulationHash }), + testClient.waitForTransactionReceipt({ hash: entrypointHash }) + ]) +} + +export const sleep = (ms: number) => + new Promise((resolve) => setTimeout(resolve, ms)) + +export type DeployerParams = { + name?: string + chainId: number + address: Address +} +export const setByteCodeDynamic = async ( + testClient: MasterClient, + deployParams: Record +) => { + const deployParamsArray = Object.values(deployParams) + + const bytecodes = (await Promise.all( + deployParamsArray.map(({ chainId, address }) => { + const fetchChain = getChain(chainId) + const publicClient = createPublicClient({ + chain: fetchChain, + transport: http() + }) + return publicClient.getCode({ address }) + }) + )) as Hex[] + + await Promise.all( + deployParamsArray.map(({ address }, index) => + testClient.setCode({ + bytecode: bytecodes[index], + address + }) + ) + ) +} diff --git a/tests/vitest.config.ts b/src/test/vitest.config.ts similarity index 66% rename from tests/vitest.config.ts rename to src/test/vitest.config.ts index 79dd08cf1..48ba25f39 100644 --- a/tests/vitest.config.ts +++ b/src/test/vitest.config.ts @@ -17,19 +17,18 @@ export default defineConfig({ "**/*.test.ts", "**/test/**" ], - include: ["src/**/*.ts"], + include: ["./src/test/**/*.test.ts", "./src/sdk/**/*.test.ts"], thresholds: { - lines: 90, - functions: 80, + lines: 80, + functions: 50, branches: 60, statements: 80 } }, + include: ["./src/test/**/*.test.ts", "./src/sdk/**/*.test.ts"], + globalSetup: join(__dirname, "globalSetup.ts"), environment: "node", - include: ["tests/**/*.test.ts"], - setupFiles: [join(__dirname, "./setupFiles.ts")], - globalSetup: [join(__dirname, "./globalSetup.ts")], - // hookTimeout: 20_000, - testTimeout: 20_000 + testTimeout: 60_000, + hookTimeout: 60_000 } }) diff --git a/tests/ep6/account.test.ts b/tests/ep6/account.test.ts deleted file mode 100644 index fc3eab6b6..000000000 --- a/tests/ep6/account.test.ts +++ /dev/null @@ -1,310 +0,0 @@ -import { beforeAll, describe, expect, test } from "vitest" - -import { - http, - createPublicClient, - createWalletClient, - encodeFunctionData, - parseAbi, - toHex, - zeroAddress -} from "viem" -import { privateKeyToAccount } from "viem/accounts" - -import { waitForTransactionReceipt } from "viem/actions" -import type { UserOperationStruct } from "../../src/accounts/index.js" -import { DEFAULT_ECDSA_OWNERSHIP_MODULE } from "../../src/accounts/utils/constants.js" -import { - validateUserOp, - walletClientToSmartAccountSigner -} from "../../src/accounts/utils/helpers.js" -import { bundlerActions } from "../../src/client/decorators/bundler.js" -import { - createSmartAccountClient, - signerToSmartAccount -} from "../../src/index.js" -import { checkBalance, getChainConfig } from "../utils.js" - -describe("Biconomy Smart Account V2 EP v6 tests", () => { - const { bundlerUrl, chain } = getChainConfig() - const account = privateKeyToAccount(`0x${process.env.PRIVATE_KEY}`) - const nftAddress = "0x1758f42Af7026fBbB559Dc60EcE0De3ef81f665e" - const walletClient = createWalletClient({ - account, - chain, - transport: http() - }) - const publicClient = createPublicClient({ - chain, - transport: http() - }) - let smartAccount: Awaited> - let smartAccountClient: ReturnType - - beforeAll(async () => { - smartAccount = await signerToSmartAccount(publicClient, { - signer: walletClientToSmartAccountSigner(walletClient) - }) - - smartAccountClient = createSmartAccountClient({ - account: smartAccount, - chain, - bundlerTransport: http(bundlerUrl) - }) - }) - - test.concurrent("Should get the init code", async () => { - const initCode = await smartAccount.getInitCode() - expect(initCode).toBeDefined() - }) - - test.concurrent("Should get account address + nonce", async () => { - const address = smartAccount.address - expect(address).toBeDefined() - const nonce = await smartAccount.getNonce() - expect(nonce).toBeDefined() - }) - - test("Should send an empty tx", async () => { - const txHash = await smartAccountClient.sendTransaction({ - to: "0xd3C85Fdd3695Aee3f0A12B3376aCD8DC54020549", - data: "0x1234" - }) - - const receipt = await waitForTransactionReceipt(publicClient, { - hash: txHash - }) - - expect(receipt).toBeDefined() - expect(txHash).toBeDefined() - }, 50000) - - test("Should mint an NFT and pay for the gas", async () => { - const encodedCall = encodeFunctionData({ - abi: parseAbi(["function safeMint(address to) public"]), - functionName: "safeMint", - args: [smartAccount.address] - }) - - const txHash = await smartAccountClient.sendTransaction({ - to: nftAddress, - data: encodedCall - }) - - const receipt = waitForTransactionReceipt(publicClient, { hash: txHash }) - - expect(receipt).toBeDefined() - expect(txHash).toBeDefined() - }, 50000) - - test.concurrent( - "Should build a user operation manually and validate it", - async () => { - const mintNftData = encodeFunctionData({ - abi: parseAbi(["function safeMint(address to) public"]), - functionName: "safeMint", - args: [smartAccount.address] - }) - - const userOp = await smartAccountClient.prepareUserOperationRequest({ - userOperation: { - callData: await smartAccountClient.account.encodeCallData({ - to: zeroAddress, - value: 0n, - data: mintNftData - }) - } - }) - - const isValid = validateUserOp(userOp) - - expect(isValid).toBe(true) - }, - 15000 - ) - - test("Should send a batch of user ops", async () => { - const encodedCall1 = encodeFunctionData({ - abi: parseAbi(["function safeMint(address to) public"]), - functionName: "safeMint", - args: [smartAccount.address] - }) - - const encodedCall2 = encodeFunctionData({ - abi: parseAbi(["function safeMint(address to) public"]), - functionName: "safeMint", - args: ["0xfCF6Eb210E5Fd84D679b14fe170f9aB05C9B21e7"] - }) - - const balanceBefore1 = await checkBalance( - publicClient, - smartAccount.address, - nftAddress - ) - const balanceBefore2 = await checkBalance( - publicClient, - "0xfCF6Eb210E5Fd84D679b14fe170f9aB05C9B21e7", - nftAddress - ) - - const txHash = await smartAccountClient.sendTransactions({ - transactions: [ - { - to: nftAddress, - data: encodedCall1, - value: 0n - }, - { - to: nftAddress, - data: encodedCall2, - value: 0n - } - ] - }) - - const receipt = waitForTransactionReceipt(publicClient, { hash: txHash }) - - expect(txHash).toBeDefined() - - const balanceAfter1 = await checkBalance( - publicClient, - smartAccount.address, - nftAddress - ) - const balanceAfter2 = await checkBalance( - publicClient, - "0xfCF6Eb210E5Fd84D679b14fe170f9aB05C9B21e7", - nftAddress - ) - - expect(balanceAfter1).toBeGreaterThan(balanceBefore1) - expect(balanceAfter2).toBeGreaterThan(balanceBefore2) - }, 50000) - - test.concurrent("Should sign a user operation", async () => { - const userOp: UserOperationStruct = { - sender: "0x99F3Bc8058503960364Ef3fDBF6407C9b0BbefCc", - nonce: toHex(0n), - initCode: - "0x000000a56Aaca3e9a4C479ea6b6CD0DbcB6634F5df20ffbc0000000000000000000000000000001c5b32f37f5bea87bdd5374eb2ac54ea8e0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000242ede3bc0000000000000000000000000d3c85fdd3695aee3f0a12b3376acd8dc5402054900000000000000000000000000000000000000000000000000000000", - callData: - "0x0000189a000000000000000000000000463cd2b5e4f059265b9520ef878bda456d8a350600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006442842e0e00000000000000000000000099f3bc8058503960364ef3fdbf6407c9b0bbefcc000000000000000000000000c7f0ea744e33fe599fb4d25ecb7440ccbc3cf9b2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000", - signature: - "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000001c5b32F37F5beA87BDD5374eB2aC54eA8e000000000000000000000000000000000000000000000000000000000000004181d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b00000000000000000000000000000000000000000000000000000000000000", - paymasterAndData: "0x", - callGasLimit: toHex(0n), - verificationGasLimit: toHex(0n), - preVerificationGas: toHex(0n), - maxFeePerGas: toHex(0n), - maxPriorityFeePerGas: toHex(0n) - } - - const sig = await smartAccount.signUserOperation(userOp) - expect(sig).toBeDefined() - }) - - test.concurrent("Client signMessage", async () => { - const response = await smartAccount.signMessage({ - message: "hello world" - }) - - expect(response).toBeTypeOf("string") - expect(response).toHaveLength(386) - }) - - test.concurrent( - "smart account should have ECDSA as default & active validation module", - async () => { - const defaultValidationModule = smartAccount.defaultValidationModule - const activeValidationModule = smartAccount.activeValidationModule - expect(defaultValidationModule.getModuleAddress()).toBe( - DEFAULT_ECDSA_OWNERSHIP_MODULE - ) - expect(activeValidationModule.getModuleAddress()).toBe( - DEFAULT_ECDSA_OWNERSHIP_MODULE - ) - } - ) - - test.concurrent("should check active module", async () => { - const activeValidationModule = smartAccount.activeValidationModule - const signer = await activeValidationModule.getSigner() - expect(signer.address).toEqual(walletClient.account?.address) - }) - - test.concurrent("Smart account client signTypedData", async () => { - const response = await smartAccount.signTypedData({ - domain: { - chainId: 1, - name: "Test", - verifyingContract: zeroAddress - }, - primaryType: "Test", - types: { - Test: [ - { - name: "test", - type: "string" - } - ] - }, - message: { - test: "hello world" - } - }) - - expect(response).toBeTypeOf("string") - expect(response).toHaveLength(386) - }) - - test.concurrent( - "should throw with custom error SignTransactionNotSupportedBySmartAccount", - async () => { - const response = smartAccount.signTransaction({ - to: zeroAddress, - value: 0n, - data: "0x" - }) - expect(response).rejects.toThrow( - "Sign transaction not supported by smart account" - ) - } - ) - - test.concurrent( - "Should build a user operation manually and send it", - async () => { - const mintNftData = encodeFunctionData({ - abi: parseAbi(["function safeMint(address to) public"]), - functionName: "safeMint", - args: [smartAccount.address] - }) - - const userOp = await smartAccountClient.prepareUserOperationRequest({ - userOperation: { - callData: await smartAccountClient.account.encodeCallData({ - to: zeroAddress, - value: 0n, - data: mintNftData - }) - } - }) - - const isValid = validateUserOp(userOp) - - expect(isValid).toBe(true) - - const userOpHash = await smartAccountClient.sendUserOperation({ - userOperation: userOp - }) - - const receipt = await smartAccountClient - .extend(bundlerActions()) - .waitForUserOperationReceipt({ hash: userOpHash }) - - expect(receipt).toBeDefined() - expect(userOpHash).toBeDefined() - }, - 50000 - ) -}) diff --git a/tests/ep6/accountSignature.test.ts b/tests/ep6/accountSignature.test.ts deleted file mode 100644 index 09b58df07..000000000 --- a/tests/ep6/accountSignature.test.ts +++ /dev/null @@ -1,264 +0,0 @@ -import { http, createPublicClient, createWalletClient } from "viem" -import { privateKeyToAccount } from "viem/accounts" -import { beforeAll, describe, expect, test } from "vitest" - -import { walletClientToSmartAccountSigner } from "../../src/accounts/utils/helpers.js" -import { - createSmartAccountClient, - signerToSmartAccount -} from "../../src/index.js" -import { getChainConfig } from "../utils.js" - -describe("Biconomy Smart Account V2 EP v6 - Signature tests", () => { - const { bundlerUrl, chain } = getChainConfig() - const account = privateKeyToAccount(`0x${process.env.PRIVATE_KEY}`) - - const walletClient = createWalletClient({ - account, - chain, - transport: http() - }) - const publicClient = createPublicClient({ - chain, - transport: http() - }) - let smartAccount: Awaited> - let smartAccountClient: ReturnType - - beforeAll(async () => { - smartAccount = await signerToSmartAccount(publicClient, { - signer: walletClientToSmartAccountSigner(walletClient) - }) - - smartAccountClient = createSmartAccountClient({ - account: smartAccount, - chain, - bundlerTransport: http(bundlerUrl) - }) - }) - - test.concurrent("verifySignature of deployed", async () => { - const message = "hello world" - - const signature = await smartAccountClient.signMessage({ - message - }) - - const isVerified = await publicClient.verifyMessage({ - address: smartAccountClient.account.address, - message, - signature - }) - - expect(isVerified).toBeTruthy() - }) - - test.concurrent("should fail because no account", async () => { - const newSmartAccountClient = createSmartAccountClient({ - account: undefined, - chain, - bundlerTransport: http(bundlerUrl) - }) - - const message = "hello world" - - const signature = newSmartAccountClient.signMessage({ - message - }) - - expect(signature).rejects.toThrow() - }) - - test.concurrent("verifySignature of not deployed", async () => { - const initialEcdsaSmartAccount = await signerToSmartAccount(publicClient, { - signer: walletClientToSmartAccountSigner(walletClient), - index: 10000n - }) - - const smartAccountClient = createSmartAccountClient({ - account: initialEcdsaSmartAccount, - chain, - bundlerTransport: http(bundlerUrl) - }) - - const message = "hello world" - - const signature = await smartAccountClient.signMessage({ - message - }) - - const isVerified = await publicClient.verifyMessage({ - address: smartAccountClient.account.address, - message, - signature - }) - - expect(isVerified).toBeTruthy() - }) - - test.concurrent("verifySignature with signTypedData", async () => { - const initialEcdsaSmartAccount = await signerToSmartAccount(publicClient, { - signer: walletClientToSmartAccountSigner(walletClient) - }) - - const smartAccountClient = createSmartAccountClient({ - account: initialEcdsaSmartAccount, - chain, - bundlerTransport: http(bundlerUrl) - }) - - const signature = await smartAccountClient.signTypedData({ - domain: { - name: "Ether Mail", - version: "1", - chainId: 1, - verifyingContract: "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" - }, - types: { - Person: [ - { name: "name", type: "string" }, - { name: "wallet", type: "address" } - ], - Mail: [ - { name: "from", type: "Person" }, - { name: "to", type: "Person" }, - { name: "contents", type: "string" } - ] - }, - primaryType: "Mail", - message: { - from: { - name: "Cow", - wallet: "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826" - }, - to: { - name: "Bob", - wallet: "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB" - }, - contents: "Hello, Bob!" - } - }) - - const isVerified = await publicClient.verifyTypedData({ - address: smartAccountClient.account.address, - domain: { - name: "Ether Mail", - version: "1", - chainId: 1, - verifyingContract: "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" - }, - types: { - Person: [ - { name: "name", type: "string" }, - { name: "wallet", type: "address" } - ], - Mail: [ - { name: "from", type: "Person" }, - { name: "to", type: "Person" }, - { name: "contents", type: "string" } - ] - }, - primaryType: "Mail", - message: { - from: { - name: "Cow", - wallet: "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826" - }, - to: { - name: "Bob", - wallet: "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB" - }, - contents: "Hello, Bob!" - }, - signature - }) - - expect(isVerified).toBeTruthy() - }) - - test.concurrent( - "verifySignature with signTypedData for not deployed", - async () => { - const initialEcdsaSmartAccount = await signerToSmartAccount( - publicClient, - { - signer: walletClientToSmartAccountSigner(walletClient) - } - ) - - const smartAccountClient = createSmartAccountClient({ - account: initialEcdsaSmartAccount, - chain, - bundlerTransport: http(bundlerUrl) - }) - - const signature = await smartAccountClient.signTypedData({ - domain: { - name: "Ether Mail", - version: "1", - chainId: 1, - verifyingContract: "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" - }, - types: { - Person: [ - { name: "name", type: "string" }, - { name: "wallet", type: "address" } - ], - Mail: [ - { name: "from", type: "Person" }, - { name: "to", type: "Person" }, - { name: "contents", type: "string" } - ] - }, - primaryType: "Mail", - message: { - from: { - name: "Cow", - wallet: "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826" - }, - to: { - name: "Bob", - wallet: "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB" - }, - contents: "Hello, Bob!" - } - }) - - const isVerified = await publicClient.verifyTypedData({ - address: smartAccountClient.account.address, - domain: { - name: "Ether Mail", - version: "1", - chainId: 1, - verifyingContract: "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" - }, - types: { - Person: [ - { name: "name", type: "string" }, - { name: "wallet", type: "address" } - ], - Mail: [ - { name: "from", type: "Person" }, - { name: "to", type: "Person" }, - { name: "contents", type: "string" } - ] - }, - primaryType: "Mail", - message: { - from: { - name: "Cow", - wallet: "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826" - }, - to: { - name: "Bob", - wallet: "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB" - }, - contents: "Hello, Bob!" - }, - signature - }) - - expect(isVerified).toBeTruthy() - } - ) -}) diff --git a/tests/ep6/bundler.test.ts b/tests/ep6/bundler.test.ts deleted file mode 100644 index 2d4cfe95a..000000000 --- a/tests/ep6/bundler.test.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { http, createPublicClient, createWalletClient, zeroAddress } from "viem" -import { privateKeyToAccount } from "viem/accounts" -import { describe, expect, test } from "vitest" -import { walletClientToSmartAccountSigner } from "../../src/accounts/utils/helpers.js" -import { createBundlerClient } from "../../src/bundler/createBundlerClient.js" -import { - createSmartAccountClient, - signerToSmartAccount -} from "../../src/index.js" -import { testForBaseSopelia } from "../setupFiles.js" -import { getChainConfig } from "../utils.js" - -describe("Bundler tests", () => { - const { bundlerUrl, chain } = getChainConfig() - const account = privateKeyToAccount(`0x${process.env.PRIVATE_KEY}`) - const walletClient = createWalletClient({ - account: account, - chain, - transport: http() - }) - const publicClient = createPublicClient({ - chain, - transport: http() - }) - - const bundlerClient = createBundlerClient({ - chain, - transport: http(bundlerUrl) - }) - - test.concurrent("Should have the properties of a viem client", async () => { - expect(bundlerClient.uid).toBeDefined() - expect(bundlerClient?.chain?.id).toBe(chain.id) - expect(bundlerClient.pollingInterval).toBeDefined() - }) - - test.concurrent("Should have a bundler specific action", async () => { - expect(await bundlerClient.chainId()).toBe(chain.id) - }) - - testForBaseSopelia.concurrent( - "Should get user op status", - async () => { - const userOpHash = - "0xebea403d4701fe950c4fe4aeb117e457a930b843238430b9cc8c3cf502bb2cb0" - - const status = await bundlerClient.getUserOpStatus(userOpHash) - expect(status).toBeDefined() - expect(status.state).toBeDefined() - expect(status.transactionHash).toBeDefined() - expect(status.userOperationReceipt).toBeDefined() - }, - 35000 - ) - - test.concurrent( - "Should get user op receipt", - async () => { - const userOpHash = - "0xebea403d4701fe950c4fe4aeb117e457a930b843238430b9cc8c3cf502bb2cb0" - - const receipt = await bundlerClient.getUserOperationReceipt({ - hash: userOpHash - }) - expect(receipt).toBeDefined() - }, - 35000 - ) - - test("Should send a user operation using the bundler client and wait for receipt", async () => { - const smartAccount = await signerToSmartAccount(publicClient, { - signer: walletClientToSmartAccountSigner(walletClient) - }) - - const smartAccountClient = createSmartAccountClient({ - account: smartAccount, - chain, - bundlerTransport: http(bundlerUrl) - }) - - const userOp = await smartAccountClient.prepareUserOperationRequest({ - userOperation: { - callData: await smartAccount.encodeCallData({ - to: zeroAddress, - value: 0n, - data: "0x1234" - }) - } - }) - - // need to sign the userOp before sending test if we use "bundlerClient.sendUserOperation" directly - userOp.signature = await smartAccount.signUserOperation(userOp) - - const newUserOpHash = await bundlerClient.sendUserOperation({ - userOperation: userOp - }) - - expect(newUserOpHash).toBeDefined() - - const receipt = await bundlerClient.waitForUserOperationReceipt({ - hash: newUserOpHash - }) - - expect(receipt).toBeDefined() - }, 35000) -}) diff --git a/tests/ep6/erc20Paymaster.test.ts b/tests/ep6/erc20Paymaster.test.ts deleted file mode 100644 index b191424a8..000000000 --- a/tests/ep6/erc20Paymaster.test.ts +++ /dev/null @@ -1,256 +0,0 @@ -import { - http, - createPublicClient, - createWalletClient, - encodeFunctionData, - parseAbi, - zeroAddress -} from "viem" -import { describe, expect, test } from "vitest" - -import { privateKeyToAccount } from "viem/accounts" -import { baseSepolia } from "viem/chains" -import { - getChain, - walletClientToSmartAccountSigner -} from "../../src/accounts/utils/helpers.js" -import { createBundlerClient } from "../../src/bundler/createBundlerClient.js" -import { - createSmartAccountClient, - signerToSmartAccount -} from "../../src/index.js" -import { createPaymasterClient } from "../../src/paymaster/createPaymasterClient.js" -import { extractChainIdFromPaymasterUrl } from "../../src/paymaster/utils/helpers.js" -import { - type FeeQuotesOrDataERC20Response, - PaymasterMode -} from "../../src/paymaster/utils/types.js" - -describe("ERC20 Paymaster tests", async () => { - const paymasterUrl = process.env.PAYMASTER_URL ?? "" - const chainId = extractChainIdFromPaymasterUrl(paymasterUrl) - const chain = getChain(chainId) - const account = privateKeyToAccount(`0x${process.env.PRIVATE_KEY}`) - const bundlerUrl = process.env.BUNDLER_URL ?? "" - - const publicClient = createPublicClient({ - chain, - transport: http(baseSepolia.rpcUrls.default.http[0]) - }) - - const walletClient = createWalletClient({ - account, - chain, - transport: http(baseSepolia.rpcUrls.default.http[0]) - }) - - const smartAccount = await signerToSmartAccount(publicClient, { - signer: walletClientToSmartAccountSigner(walletClient) - }) - - const bundlerClient = createBundlerClient({ - transport: http(bundlerUrl) - }) - - const smartAccountClient = createSmartAccountClient({ - account: smartAccount, - chain, - bundlerTransport: http(bundlerUrl) - }) - - test.concurrent( - "Should get ERC20 Paymaster supported tokens fee quotes", - async () => { - const paymasterClient = createPaymasterClient({ - chain, - transport: http(paymasterUrl) - }) - - const userOp = await smartAccountClient.prepareUserOperationRequest({ - userOperation: { - callData: await smartAccountClient.account.encodeCallData({ - to: zeroAddress, - value: 0n, - data: "0x" - }) - } - }) - - const result = await paymasterClient.getPaymasterFeeQuotesOrData({ - userOperation: userOp, - mode: PaymasterMode.ERC20 - }) - - expect(result).toBeTruthy() - }, - 15000 - ) - - test.concurrent( - "Should get ERC20 Paymaster preffered token fee quotes", - async () => { - const paymasterClient = createPaymasterClient({ - chain, - transport: http(paymasterUrl) - }) - - const userOp = await smartAccountClient.prepareUserOperationRequest({ - userOperation: { - callData: await smartAccountClient.account.encodeCallData({ - to: zeroAddress, - value: 0n, - data: "0x" - }) - } - }) - - const result = await paymasterClient.getPaymasterFeeQuotesOrData({ - userOperation: userOp, - mode: PaymasterMode.ERC20, - preferredToken: "0x7683022d84f726a96c4a6611cd31dbf5409c0ac9" - }) - - expect(result).toBeTruthy() - }, - 50000 - ) - - test.concurrent( - "Should get SPONSORED Paymaster fee quotes", - async () => { - const paymasterClient = createPaymasterClient({ - chain, - transport: http(paymasterUrl) - }) - - const userOp = await smartAccountClient.prepareUserOperationRequest({ - userOperation: { - callData: await smartAccountClient.account.encodeCallData({ - to: zeroAddress, - value: 0n, - data: "0x" - }) - } - }) - - const result = await paymasterClient.getPaymasterFeeQuotesOrData({ - userOperation: userOp, - mode: PaymasterMode.SPONSORED - }) - - expect(result).toBeTruthy() - }, - 50000 - ) - - test.concurrent( - "Should send a ERC20 sponsored user operation using sendUserOperation", - async () => { - const paymasterClient = createPaymasterClient({ - transport: http(paymasterUrl) - }) - const nftAddress = "0x1758f42Af7026fBbB559Dc60EcE0De3ef81f665e" - const encodedCall = encodeFunctionData({ - abi: parseAbi(["function safeMint(address to) public"]), - functionName: "safeMint", - args: [smartAccount.address] - }) - - const userOp = await smartAccountClient.prepareUserOperationRequest({ - userOperation: { - callData: await smartAccountClient.account.encodeCallData({ - to: nftAddress, - value: 0n, - data: encodedCall - }) - } - }) - - const response: FeeQuotesOrDataERC20Response = - await paymasterClient.getPaymasterFeeQuotesOrData({ - userOperation: userOp, - mode: PaymasterMode.ERC20 - }) - - const sponsoredSmartAccountClient = createSmartAccountClient({ - account: smartAccount, - chain, - bundlerTransport: http(bundlerUrl), - middleware: { - gasPrice: async () => { - const { maxFeePerGas, maxPriorityFeePerGas } = - await bundlerClient.getGasFeeValues() - return { maxFeePerGas, maxPriorityFeePerGas } - }, - sponsorUserOperation: paymasterClient.sponsorUserOperation, - paymasterMode: PaymasterMode.ERC20, - feeQuote: response.feeQuotes?.[0] - } - }) - - const userOpHash = await sponsoredSmartAccountClient.sendUserOperation({ - userOperation: userOp - }) - - const receipt = await bundlerClient.waitForUserOperationReceipt({ - hash: userOpHash - }) - - expect(receipt).toBeTruthy() - expect(userOpHash).toBeTruthy() - }, - 50000 - ) - - test.concurrent( - "Should throw error if no feeQuote passed for ERC20 mode", - async () => { - const paymasterClient = createPaymasterClient({ - transport: http(paymasterUrl) - }) - const nftAddress = "0x1758f42Af7026fBbB559Dc60EcE0De3ef81f665e" - const encodedCall = encodeFunctionData({ - abi: parseAbi(["function safeMint(address to) public"]), - functionName: "safeMint", - args: [smartAccount.address] - }) - - const userOp = await smartAccountClient.prepareUserOperationRequest({ - userOperation: { - callData: await smartAccountClient.account.encodeCallData({ - to: nftAddress, - value: 0n, - data: encodedCall - }) - } - }) - - const response: FeeQuotesOrDataERC20Response = - await paymasterClient.getPaymasterFeeQuotesOrData({ - userOperation: userOp, - mode: PaymasterMode.ERC20 - }) - - const sponsoredSmartAccountClient = createSmartAccountClient({ - account: smartAccount, - chain, - bundlerTransport: http(bundlerUrl), - middleware: { - gasPrice: async () => { - const { maxFeePerGas, maxPriorityFeePerGas } = - await bundlerClient.getGasFeeValues() - return { maxFeePerGas, maxPriorityFeePerGas } - }, - sponsorUserOperation: paymasterClient.sponsorUserOperation, - paymasterMode: PaymasterMode.ERC20 - // feeQuote: response.feeQuotes![0], - } - }) - - await expect( - sponsoredSmartAccountClient.sendUserOperation({ userOperation: userOp }) - ).rejects.toThrow("No fee quote found for ERC20 Paymaster") - }, - 50000 - ) -}) diff --git a/tests/ep6/errors.test.ts b/tests/ep6/errors.test.ts deleted file mode 100644 index 9b5b86b4f..000000000 --- a/tests/ep6/errors.test.ts +++ /dev/null @@ -1,144 +0,0 @@ -import { - http, - type Hex, - createPublicClient, - createWalletClient, - encodeFunctionData, - parseAbi, - zeroAddress -} from "viem" -import { generatePrivateKey, privateKeyToAccount } from "viem/accounts" -import { beforeAll, describe, expect, test } from "vitest" -import { createSmartAccountClient, signerToSmartAccount } from "../../src" -import { walletClientToSmartAccountSigner } from "../../src/accounts/utils/helpers" -import type { KnownError } from "../../src/accounts/utils/types" -import { createBundlerClient } from "../../src/bundler" -import { ERRORS_URL } from "../../src/errors/getters/getBundlerError" -import { getChainConfig } from "../utils" - -describe("Errors", () => { - const { bundlerUrl, chain } = getChainConfig() - const randomPrivateKey = generatePrivateKey() - const fundedPrivateKey: Hex = `0x${process.env.PRIVATE_KEY}` - const unfundedAccount = privateKeyToAccount(randomPrivateKey) - const fundedAccount = privateKeyToAccount(fundedPrivateKey) - const nftAddress = "0x1758f42Af7026fBbB559Dc60EcE0De3ef81f665e" - const errors: KnownError[] = [] - - const unfundedWalletClient = createWalletClient({ - account: unfundedAccount, - chain, - transport: http() - }) - - const fundedWalletClient = createWalletClient({ - account: fundedAccount, - chain, - transport: http() - }) - - const publicClient = createPublicClient({ - chain, - transport: http() - }) - let unfundedSmartAccount: Awaited> - let unfundedSmartAccountClient: ReturnType - - beforeAll(async () => { - unfundedSmartAccount = await signerToSmartAccount(publicClient, { - signer: walletClientToSmartAccountSigner(unfundedWalletClient) - }) - - unfundedSmartAccountClient = createSmartAccountClient({ - account: unfundedSmartAccount, - chain, - bundlerTransport: http(bundlerUrl) - }) - - const _errors = await (await fetch(ERRORS_URL)).json() - errors.push(..._errors) - }) - - test.concurrent( - "should fail with SmartAccountInsufficientFundsError", - async () => { - const encodedCall = encodeFunctionData({ - abi: parseAbi(["function safeMint(address to) public"]), - functionName: "safeMint", - args: [unfundedSmartAccount.address] - }) - - await expect( - unfundedSmartAccountClient.sendTransaction({ - to: nftAddress, - data: encodedCall - }) - ).rejects.toThrow("SmartAccountInsufficientFundsError") - }, - 50000 - ) - - test.concurrent( - "should give advice on insufficient funds", - async () => { - const relevantErrorFromRequest = errors.find( - (error: KnownError) => error.regex === "aa21" - ) - - const encodedCall = encodeFunctionData({ - abi: parseAbi(["function safeMint(address to) public"]), - functionName: "safeMint", - args: [unfundedSmartAccount.address] - }) - - const adviceFromRequest = relevantErrorFromRequest?.solutions[1] - const adviceString = - "Send some native tokens in your smart wallet to be able to resolve the error." - - expect(adviceFromRequest).toBe(adviceString) - - await expect( - unfundedSmartAccountClient.sendTransaction({ - to: nftAddress, - data: encodedCall - }) - ).rejects.toThrow(adviceString) - }, - 50000 - ) - - test.concurrent( - "should fail with an incorrect nonce", - async () => { - const INCORRECT_NONCE = 1n - const smartAccount = await signerToSmartAccount(publicClient, { - signer: walletClientToSmartAccountSigner(fundedWalletClient) - }) - - const smartAccountClient = createSmartAccountClient({ - account: smartAccount, - chain, - bundlerTransport: http(bundlerUrl) - }) - - const bundlerClient = createBundlerClient({ - chain, - transport: http(bundlerUrl) - }) - - await expect( - smartAccountClient.prepareUserOperationRequest({ - userOperation: { - nonce: INCORRECT_NONCE, - callData: await smartAccount.encodeCallData({ - to: zeroAddress, - value: 0n, - data: "0x1234" - }) - } - }) - ).rejects.toThrow("AA25: InvalidSmartAccountNonceError") - }, - 35000 - ) -}) diff --git a/tests/ep6/modules/ecdsaOwnershipModule.test.ts b/tests/ep6/modules/ecdsaOwnershipModule.test.ts deleted file mode 100644 index 74edf8ac8..000000000 --- a/tests/ep6/modules/ecdsaOwnershipModule.test.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { beforeAll, describe, expect, test } from "vitest" - -import { - http, - type WalletClient, - createPublicClient, - createWalletClient -} from "viem" -import type { PublicClient } from "viem" -import { privateKeyToAccount } from "viem/accounts" -import { DEFAULT_ECDSA_OWNERSHIP_MODULE } from "../../../src/accounts/utils/constants.js" -import { walletClientToSmartAccountSigner } from "../../../src/accounts/utils/helpers.js" -import { signerToSmartAccount } from "../../../src/index.js" -import { getChainConfig } from "../../utils.js" - -describe("Biconomy Smart Account core tests", () => { - let smartAccount: Awaited> - let walletClient: WalletClient - let publicClient: PublicClient - - const account = privateKeyToAccount(`0x${process.env.PRIVATE_KEY}`) - - const { chain } = getChainConfig() - - beforeAll(async () => { - // @ts-ignore - publicClient = createPublicClient({ - chain, - transport: http() - }) - - walletClient = createWalletClient({ - account, - chain, - transport: http() - }) - - smartAccount = await signerToSmartAccount(publicClient, { - signer: walletClientToSmartAccountSigner(walletClient) - }) - }) - - test("Should get account address + nonce", async () => { - const address = smartAccount.address - - const nonce = await smartAccount.getNonce() - }) - - test("should get validation module address", async () => { - const response = smartAccount.defaultValidationModule.getModuleAddress() - expect(response).toBe(DEFAULT_ECDSA_OWNERSHIP_MODULE) - }) - - test("should get validation module signer", async () => { - const response = await smartAccount.defaultValidationModule.getSigner() - walletClient.account && - expect(response.address).toBe(walletClient.account.address) - }) -}) diff --git a/tests/ep6/paymaster.test.ts b/tests/ep6/paymaster.test.ts deleted file mode 100644 index 526f0b0e9..000000000 --- a/tests/ep6/paymaster.test.ts +++ /dev/null @@ -1,200 +0,0 @@ -import { - http, - createPublicClient, - createWalletClient, - encodeFunctionData, - parseAbi, - zeroAddress -} from "viem" -import { describe, expect, test } from "vitest" - -import { privateKeyToAccount } from "viem/accounts" -import { waitForTransactionReceipt } from "viem/actions" -import { walletClientToSmartAccountSigner } from "../../src/accounts/utils/helpers.js" -import { createBundlerClient } from "../../src/bundler/createBundlerClient.js" -import { - createSmartAccountClient, - signerToSmartAccount -} from "../../src/index.js" -import { createPaymasterClient } from "../../src/paymaster/createPaymasterClient.js" -import { PaymasterMode } from "../../src/paymaster/utils/types.js" -import { testForBaseSopelia } from "../setupFiles.js" -import { getChainConfig } from "../utils.js" - -describe("Paymaster tests", async () => { - const account = privateKeyToAccount(`0x${process.env.PRIVATE_KEY}`) - - const { chain, chainId, paymasterUrl, bundlerUrl } = getChainConfig() - - const publicClient = createPublicClient({ - chain, - transport: http() - }) - - const walletClient = createWalletClient({ - account, - chain, - transport: http() - }) - - const smartAccount = await signerToSmartAccount(publicClient, { - signer: walletClientToSmartAccountSigner(walletClient) - }) - - const bundlerClient = createBundlerClient({ - transport: http(bundlerUrl) - }) - - const smartAccountClient = createSmartAccountClient({ - account: smartAccount, - chain, - bundlerTransport: http(bundlerUrl) - }) - - test.concurrent("Should have the properties of a viem client", async () => { - const paymasterClient = createPaymasterClient({ - chain, - transport: http(paymasterUrl) - }) - expect(paymasterClient.uid).toBeDefined() - expect(paymasterClient?.chain?.id).toBe(chainId) - expect(paymasterClient.pollingInterval).toBeDefined() - }) - - test.concurrent("Should return sponsored user operation values", async () => { - const paymasterClient = createPaymasterClient({ - chain, - transport: http(paymasterUrl) - }) - - const userOp = await smartAccountClient.prepareUserOperationRequest({ - userOperation: { - callData: await smartAccountClient.account.encodeCallData({ - to: zeroAddress, - value: 0n, - data: "0x" - }) - } - }) - - const result = await paymasterClient.sponsorUserOperation({ - userOperation: userOp, - mode: PaymasterMode.SPONSORED - }) - - expect(result).toBeTruthy() - }) - - test("Should send a sponsored user operation using sendUserOperation", async () => { - const paymasterClient = createPaymasterClient({ - transport: http(paymasterUrl) - }) - const nftAddress = "0x1758f42Af7026fBbB559Dc60EcE0De3ef81f665e" - const encodedCall = encodeFunctionData({ - abi: parseAbi(["function safeMint(address to) public"]), - functionName: "safeMint", - args: [smartAccount.address] - }) - - const userOp = await smartAccountClient.prepareUserOperationRequest({ - userOperation: { - callData: await smartAccountClient.account.encodeCallData({ - to: nftAddress, - value: 0n, - data: encodedCall - }) - } - }) - - const sponsoredSmartAccountClient = createSmartAccountClient({ - account: smartAccount, - chain, - bundlerTransport: http(bundlerUrl), - middleware: { - gasPrice: async () => { - const { maxFeePerGas, maxPriorityFeePerGas } = - await bundlerClient.getGasFeeValues() - return { maxFeePerGas, maxPriorityFeePerGas } - }, - sponsorUserOperation: paymasterClient.sponsorUserOperation - } - }) - - const userOpHash = await sponsoredSmartAccountClient.sendUserOperation({ - userOperation: userOp - }) - - const receipt = await bundlerClient.waitForUserOperationReceipt({ - hash: userOpHash - }) - - expect(receipt).toBeTruthy() - expect(userOpHash).toBeTruthy() - }, 50000) - - testForBaseSopelia( - "Should return sponsored user operation values", - async () => { - const paymasterClient = createPaymasterClient({ - chain, - transport: http(paymasterUrl) - }) - - const userOp = await smartAccountClient.prepareUserOperationRequest({ - userOperation: { - callData: await smartAccountClient.account.encodeCallData({ - to: zeroAddress, - value: 0n, - data: "0x" - }) - } - }) - - const result = await paymasterClient.sponsorUserOperation({ - userOperation: userOp, - mode: PaymasterMode.SPONSORED - }) - - expect(result).toBeTruthy() - } - ) - - test("Should send a sponsored user operation using sendTransaction", async () => { - const paymasterClient = createPaymasterClient({ - transport: http(paymasterUrl) - }) - const nftAddress = "0x1758f42Af7026fBbB559Dc60EcE0De3ef81f665e" - const encodedCall = encodeFunctionData({ - abi: parseAbi(["function safeMint(address to) public"]), - functionName: "safeMint", - args: [smartAccount.address] - }) - - const sponsoredSmartAccountClient = createSmartAccountClient({ - account: smartAccount, - chain, - bundlerTransport: http(bundlerUrl), - middleware: { - gasPrice: async () => { - const { maxFeePerGas, maxPriorityFeePerGas } = - await bundlerClient.getGasFeeValues() - return { maxFeePerGas, maxPriorityFeePerGas } - }, - sponsorUserOperation: paymasterClient.sponsorUserOperation - } - }) - - const txHash = await sponsoredSmartAccountClient.sendTransaction({ - to: nftAddress, - value: 0n, - data: encodedCall - }) - - const receipt = await waitForTransactionReceipt(publicClient, { - hash: txHash - }) - - expect(receipt).toBeTruthy() - expect(txHash).toBeTruthy() - }, 50000) -}) diff --git a/tests/globalSetup.ts b/tests/globalSetup.ts deleted file mode 100644 index 7e1588673..000000000 --- a/tests/globalSetup.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { envCheck, getChainConfig } from "./utils.js" - -export default function setup({ provide: _ }) { - envCheck() - getChainConfig() -} diff --git a/tests/setupFiles.ts b/tests/setupFiles.ts deleted file mode 100644 index 67dd096cf..000000000 --- a/tests/setupFiles.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { test } from "vitest" - -export const testForBaseSopelia = - Number(process.env.CHAIN_ID || 0) === 84532 ? test : test.skip diff --git a/tests/utils.ts b/tests/utils.ts deleted file mode 100644 index 23a9c9be6..000000000 --- a/tests/utils.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { type Hex, type PublicClient, parseAbi } from "viem" -import { getChain } from "../src/accounts/utils/helpers" -import { extractChainIdFromBundlerUrl } from "../src/bundler/utils/helpers" -import { extractChainIdFromPaymasterUrl } from "../src/paymaster/utils/helpers" - -export const envCheck = () => { - const fields = ["BUNDLER_URL", "PRIVATE_KEY", "PAYMASTER_URL", "CHAIN_ID"] - const errorFields = fields.filter((field) => !process.env[field]) - if (errorFields.length) { - throw new Error( - `Missing environment variable${ - errorFields.length > 1 ? "s" : "" - }: ${errorFields.join(", ")}` - ) - } -} - -export const getChainConfig = () => { - const paymasterUrl = process.env.PAYMASTER_URL || "" - const bundlerUrl = process.env.BUNDLER_URL || "" - const chains = [Number.parseInt(process.env.CHAIN_ID || "0")] - - try { - const chainIdFromBundlerUrl = extractChainIdFromBundlerUrl(bundlerUrl) - chains.push(chainIdFromBundlerUrl) - } catch (e) {} - - try { - const chainIdFromPaymasterUrl = extractChainIdFromPaymasterUrl(paymasterUrl) - chains.push(chainIdFromPaymasterUrl) - } catch (e) {} - - const allChainsMatch = chains.every((chain) => chain === chains[0]) - - if (!allChainsMatch) { - throw new Error("Chain IDs do not match") - } - const chainId = chains[0] - const chain = getChain(chainId) - return { - chain, - chainId, - paymasterUrl, - bundlerUrl - } -} - -export const checkBalance = ( - publicClient: PublicClient, - address: Hex, - tokenAddress?: Hex -) => { - if (!tokenAddress) { - return publicClient.getBalance({ address }) - } - return publicClient.readContract({ - address: tokenAddress, - abi: parseAbi([ - "function balanceOf(address owner) view returns (uint balance)" - ]), - functionName: "balanceOf", - // @ts-ignore - args: [address] - }) -} diff --git a/tsconfig/tsconfig.base.json b/tsconfig/tsconfig.base.json index 671115660..4b41d4c54 100644 --- a/tsconfig/tsconfig.base.json +++ b/tsconfig/tsconfig.base.json @@ -12,6 +12,7 @@ "allowJs": false, "checkJs": false, "esModuleInterop": false, + "resolveJsonModule": true, "allowSyntheticDefaultImports": false, "forceConsistentCasingInFileNames": true, "verbatimModuleSyntax": true, diff --git a/tsconfig/tsconfig.cjs.json b/tsconfig/tsconfig.cjs.json index d5607ac12..0b9054568 100644 --- a/tsconfig/tsconfig.cjs.json +++ b/tsconfig/tsconfig.cjs.json @@ -1,10 +1,16 @@ { - "extends": "./tsconfig.json", - "compilerOptions": { - "module": "commonjs", - "outDir": "../dist/_cjs", - "removeComments": true, - "verbatimModuleSyntax": false, - "noEmit": false - } -} + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "../dist/_cjs", + "removeComments": true, + "verbatimModuleSyntax": false, + "noEmit": false, + "rootDir": "../src/sdk" + }, + "exclude": [ + "../src/test/**/*.*", + "../src/sdk/**/*.test.*", + "../src/sdk/**/*.spec.*", + ] +} \ No newline at end of file diff --git a/tsconfig/tsconfig.esm.json b/tsconfig/tsconfig.esm.json index 136a81fc1..35640e490 100644 --- a/tsconfig/tsconfig.esm.json +++ b/tsconfig/tsconfig.esm.json @@ -3,6 +3,12 @@ "compilerOptions": { "module": "es2015", "outDir": "../dist/_esm", - "noEmit": false - } -} + "noEmit": false, + "rootDir": "../src/sdk" + }, + "exclude": [ + "../src/test/**/*.*", + "../src/sdk/**/*.test.*", + "../src/sdk/**/*.spec.*", + ] +} \ No newline at end of file diff --git a/tsconfig/tsconfig.json b/tsconfig/tsconfig.json index 2c9c1e634..4d8f6dbae 100644 --- a/tsconfig/tsconfig.json +++ b/tsconfig/tsconfig.json @@ -6,7 +6,7 @@ "exclude": [ "../src/**/*.test.ts", "../src/**/*.test-d.ts", - "../src/**/*.bench.ts" + "../src/**/*.bench.ts", ], "compilerOptions": { "moduleResolution": "node", diff --git a/tsconfig/tsconfig.types.json b/tsconfig/tsconfig.types.json index bb70b996d..6ee2578c0 100644 --- a/tsconfig/tsconfig.types.json +++ b/tsconfig/tsconfig.types.json @@ -7,6 +7,12 @@ "emitDeclarationOnly": true, "declaration": true, "declarationMap": true, - "noEmit": false - } -} + "noEmit": false, + "rootDir": "../src/sdk" + }, + "exclude": [ + "../src/test/**/*.*", + "../src/sdk/**/*.test.*", + "../src/sdk/**/*.spec.*", + ] +} \ No newline at end of file diff --git a/typedoc.json b/typedoc.json index 6a717b22a..1b6162e2c 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,6 +1,11 @@ { "$schema": "https://typedoc.org/schema.json", "entryPoints": ["src/index.ts"], + "exclude": [ + "src/sdk/account/utils/**/*.ts", + "src/sdk/__contracts/**/*.ts", + "src/test/**/*.ts" + ], "basePath": "src", "includes": "src", "out": "docs",