@funkit/core 2.1.2-next.0 → 2.1.2-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +16232 -12
- package/dist/index.js.map +7 -1
- package/dist/src/viem/Converter.d.ts +4 -4
- package/package.json +6 -4
- package/dist/src/abis/ApproveAndExec.json +0 -106
- package/dist/src/abis/ApproveAndSwap.json +0 -141
- package/dist/src/abis/CheckoutPaymaster.json +0 -3358
- package/dist/src/abis/ERC20.json +0 -1
- package/dist/src/abis/ERC721.json +0 -1
- package/dist/src/abis/EntryPoint.json +0 -1023
- package/dist/src/abis/EstimationPaymaster.json +0 -266
- package/dist/src/abis/FeePercentOracle.json +0 -218
- package/dist/src/abis/FunWallet.json +0 -758
- package/dist/src/abis/FunWalletFactory.json +0 -232
- package/dist/src/abis/GaslessPaymaster.json +0 -558
- package/dist/src/abis/LidoWithdrawQueue.json +0 -1
- package/dist/src/abis/RoleBasedAccessControl.json +0 -836
- package/dist/src/abis/TestNFT.json +0 -226
- package/dist/src/abis/TokenPaymaster.json +0 -696
- package/dist/src/abis/TokenPriceOracle.json +0 -57
- package/dist/src/abis/UniswapV2Factory.json +0 -1
- package/dist/src/abis/UniswapV2Router02.json +0 -1
- package/dist/src/abis/UniswapV3LimitOrder.json +0 -1
- package/dist/src/abis/UserAuthentication.json +0 -338
- package/dist/src/abis/univ3factory.json +0 -1
- package/dist/src/abis/univ3quoter.json +0 -1
- package/dist/src/abis/univ3router.json +0 -1
- package/dist/src/actions/AccessControl.js +0 -87
- package/dist/src/actions/AccessControl.js.map +0 -1
- package/dist/src/actions/BatchActions.js +0 -8
- package/dist/src/actions/BatchActions.js.map +0 -1
- package/dist/src/actions/Bridge.js +0 -42
- package/dist/src/actions/Bridge.js.map +0 -1
- package/dist/src/actions/FirstClassActions.js +0 -329
- package/dist/src/actions/FirstClassActions.js.map +0 -1
- package/dist/src/actions/Group.js +0 -30
- package/dist/src/actions/Group.js.map +0 -1
- package/dist/src/actions/LimitOrder.js +0 -43
- package/dist/src/actions/LimitOrder.js.map +0 -1
- package/dist/src/actions/Stake.js +0 -108
- package/dist/src/actions/Stake.js.map +0 -1
- package/dist/src/actions/Swap.js +0 -150
- package/dist/src/actions/Swap.js.map +0 -1
- package/dist/src/actions/Token.js +0 -103
- package/dist/src/actions/Token.js.map +0 -1
- package/dist/src/actions/index.js +0 -8
- package/dist/src/actions/index.js.map +0 -1
- package/dist/src/actions/types.js +0 -14
- package/dist/src/actions/types.js.map +0 -1
- package/dist/src/apis/AccessControlApis.js +0 -19
- package/dist/src/apis/AccessControlApis.js.map +0 -1
- package/dist/src/apis/BridgeApis.js +0 -54
- package/dist/src/apis/BridgeApis.js.map +0 -1
- package/dist/src/apis/ContractApis.js +0 -7
- package/dist/src/apis/ContractApis.js.map +0 -1
- package/dist/src/apis/GroupApis.js +0 -15
- package/dist/src/apis/GroupApis.js.map +0 -1
- package/dist/src/apis/InfoApis.js +0 -53
- package/dist/src/apis/InfoApis.js.map +0 -1
- package/dist/src/apis/ListenerApis.js +0 -31
- package/dist/src/apis/ListenerApis.js.map +0 -1
- package/dist/src/apis/NFTApis.js +0 -29
- package/dist/src/apis/NFTApis.js.map +0 -1
- package/dist/src/apis/OperationApis.js +0 -76
- package/dist/src/apis/OperationApis.js.map +0 -1
- package/dist/src/apis/PaymasterApis.js +0 -18
- package/dist/src/apis/PaymasterApis.js.map +0 -1
- package/dist/src/apis/SwapApis.js +0 -40
- package/dist/src/apis/SwapApis.js.map +0 -1
- package/dist/src/apis/UserApis.js +0 -56
- package/dist/src/apis/UserApis.js.map +0 -1
- package/dist/src/apis/index.js +0 -9
- package/dist/src/apis/index.js.map +0 -1
- package/dist/src/apis/types.js +0 -2
- package/dist/src/apis/types.js.map +0 -1
- package/dist/src/auth/Auth.js +0 -321
- package/dist/src/auth/Auth.js.map +0 -1
- package/dist/src/auth/SessionKeyAuth.js +0 -115
- package/dist/src/auth/SessionKeyAuth.js.map +0 -1
- package/dist/src/auth/index.js +0 -3
- package/dist/src/auth/index.js.map +0 -1
- package/dist/src/auth/types.js +0 -2
- package/dist/src/auth/types.js.map +0 -1
- package/dist/src/common/constants.js +0 -477
- package/dist/src/common/constants.js.map +0 -1
- package/dist/src/common/index.js +0 -3
- package/dist/src/common/index.js.map +0 -1
- package/dist/src/common/types.js +0 -2
- package/dist/src/common/types.js.map +0 -1
- package/dist/src/config/Config.js +0 -50
- package/dist/src/config/Config.js.map +0 -1
- package/dist/src/config/index.js +0 -3
- package/dist/src/config/index.js.map +0 -1
- package/dist/src/config/types.js +0 -2
- package/dist/src/config/types.js.map +0 -1
- package/dist/src/data/Chain.js +0 -209
- package/dist/src/data/Chain.js.map +0 -1
- package/dist/src/data/NFT.js +0 -101
- package/dist/src/data/NFT.js.map +0 -1
- package/dist/src/data/Operation.js +0 -88
- package/dist/src/data/Operation.js.map +0 -1
- package/dist/src/data/SolidityData.js +0 -84
- package/dist/src/data/SolidityData.js.map +0 -1
- package/dist/src/data/Token.js +0 -118
- package/dist/src/data/Token.js.map +0 -1
- package/dist/src/data/index.js +0 -7
- package/dist/src/data/index.js.map +0 -1
- package/dist/src/data/types.js +0 -22
- package/dist/src/data/types.js.map +0 -1
- package/dist/src/errors/BaseError.js +0 -25
- package/dist/src/errors/BaseError.js.map +0 -1
- package/dist/src/errors/ClientError.js +0 -63
- package/dist/src/errors/ClientError.js.map +0 -1
- package/dist/src/errors/ServerError.js +0 -13
- package/dist/src/errors/ServerError.js.map +0 -1
- package/dist/src/errors/errors.json +0 -626
- package/dist/src/errors/index.js +0 -5
- package/dist/src/errors/index.js.map +0 -1
- package/dist/src/errors/types.js +0 -48
- package/dist/src/errors/types.js.map +0 -1
- package/dist/src/sponsors/CheckoutSponsor.js +0 -61
- package/dist/src/sponsors/CheckoutSponsor.js.map +0 -1
- package/dist/src/sponsors/GaslessSponsor.js +0 -75
- package/dist/src/sponsors/GaslessSponsor.js.map +0 -1
- package/dist/src/sponsors/Sponsor.js +0 -80
- package/dist/src/sponsors/Sponsor.js.map +0 -1
- package/dist/src/sponsors/TokenSponsor.js +0 -251
- package/dist/src/sponsors/TokenSponsor.js.map +0 -1
- package/dist/src/sponsors/index.js +0 -5
- package/dist/src/sponsors/index.js.map +0 -1
- package/dist/src/sponsors/types.js +0 -8
- package/dist/src/sponsors/types.js.map +0 -1
- package/dist/src/utils/ApiUtils.js +0 -94
- package/dist/src/utils/ApiUtils.js.map +0 -1
- package/dist/src/utils/AuthUtils.js +0 -31
- package/dist/src/utils/AuthUtils.js.map +0 -1
- package/dist/src/utils/ChainUtils.js +0 -131
- package/dist/src/utils/ChainUtils.js.map +0 -1
- package/dist/src/utils/CheckoutUtils.js +0 -28
- package/dist/src/utils/CheckoutUtils.js.map +0 -1
- package/dist/src/utils/GroupUtils.js +0 -26
- package/dist/src/utils/GroupUtils.js.map +0 -1
- package/dist/src/utils/MerkleUtils.js +0 -86
- package/dist/src/utils/MerkleUtils.js.map +0 -1
- package/dist/src/utils/PaymasterUtils.js +0 -17
- package/dist/src/utils/PaymasterUtils.js.map +0 -1
- package/dist/src/utils/SwapUtils.js +0 -193
- package/dist/src/utils/SwapUtils.js.map +0 -1
- package/dist/src/utils/TypeUtils.js +0 -9
- package/dist/src/utils/TypeUtils.js.map +0 -1
- package/dist/src/utils/UserOpUtils.js +0 -171
- package/dist/src/utils/UserOpUtils.js.map +0 -1
- package/dist/src/utils/ViemUtils.js +0 -30
- package/dist/src/utils/ViemUtils.js.map +0 -1
- package/dist/src/utils/WalletUtils.js +0 -56
- package/dist/src/utils/WalletUtils.js.map +0 -1
- package/dist/src/utils/index.js +0 -9
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/viem/ContractInterface.js +0 -90
- package/dist/src/viem/ContractInterface.js.map +0 -1
- package/dist/src/viem/Converter.js +0 -47
- package/dist/src/viem/Converter.js.map +0 -1
- package/dist/src/viem/index.js +0 -3
- package/dist/src/viem/index.js.map +0 -1
- package/dist/src/wallet/FunWallet.js +0 -804
- package/dist/src/wallet/FunWallet.js.map +0 -1
- package/dist/src/wallet/index.js +0 -3
- package/dist/src/wallet/index.js.map +0 -1
- package/dist/src/wallet/types.js +0 -2
- package/dist/src/wallet/types.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/actions/AccessControl.ts", "../src/auth/Auth.ts", "../src/apis/UserApis.ts", "../src/common/constants.ts", "../src/abis/ApproveAndExec.json", "../src/abis/ApproveAndSwap.json", "../src/abis/CheckoutPaymaster.json", "../src/abis/EntryPoint.json", "../src/abis/ERC20.json", "../src/abis/ERC721.json", "../src/abis/EstimationPaymaster.json", "../src/abis/FeePercentOracle.json", "../src/abis/FunWallet.json", "../src/abis/FunWalletFactory.json", "../src/abis/GaslessPaymaster.json", "../src/abis/LidoWithdrawQueue.json", "../src/abis/RoleBasedAccessControl.json", "../src/abis/TestNFT.json", "../src/abis/TokenPaymaster.json", "../src/abis/TokenPriceOracle.json", "../src/abis/UniswapV2Factory.json", "../src/abis/UniswapV2Router02.json", "../src/abis/UniswapV3LimitOrder.json", "../src/abis/univ3factory.json", "../src/abis/univ3quoter.json", "../src/abis/univ3router.json", "../src/abis/UserAuthentication.json", "../src/viem/ContractInterface.ts", "../src/data/Chain.ts", "../src/utils/ApiUtils.ts", "../src/errors/BaseError.ts", "../src/errors/errors.json", "../src/errors/types.ts", "../src/errors/ClientError.ts", "../src/errors/ServerError.ts", "../src/utils/AuthUtils.ts", "../src/utils/ChainUtils.ts", "../src/utils/CheckoutUtils.ts", "../src/utils/PaymasterUtils.ts", "../src/utils/SwapUtils.ts", "../src/utils/UserOpUtils.ts", "../src/utils/WalletUtils.ts", "../src/apis/ContractApis.ts", "../src/apis/GroupApis.ts", "../src/apis/InfoApis.ts", "../src/apis/NFTApis.ts", "../src/apis/OperationApis.ts", "../src/apis/PaymasterApis.ts", "../src/data/NFT.ts", "../src/data/Operation.ts", "../src/data/SolidityData.ts", "../src/data/Token.ts", "../src/data/types.ts", "../src/utils/TypeUtils.ts", "../src/viem/Converter.ts", "../src/auth/SessionKeyAuth.ts", "../src/utils/ViemUtils.ts", "../src/utils/MerkleUtils.ts", "../src/actions/BatchActions.ts", "../src/actions/Group.ts", "../src/actions/Stake.ts", "../src/actions/Swap.ts", "../src/apis/SwapApis.ts", "../src/actions/types.ts", "../src/actions/Token.ts", "../src/config/Config.ts", "../src/sponsors/Sponsor.ts", "../src/sponsors/CheckoutSponsor.ts", "../src/sponsors/GaslessSponsor.ts", "../src/sponsors/TokenSponsor.ts", "../src/wallet/FunWallet.ts", "../src/actions/FirstClassActions.ts", "../src/utils/GroupUtils.ts", "../src/apis/BridgeApis.ts", "../src/actions/Bridge.ts", "../src/actions/LimitOrder.ts", "../src/apis/AccessControlApis.ts"],
|
|
4
|
+
"sourcesContent": ["import { getAddress, Hex, pad } from 'viem'\n\nimport { SessionKeyAuth } from '../auth'\nimport { AuthInput } from '../auth/types'\nimport { RBAC_CONTRACT_INTERFACE, TransactionParams } from '../common'\nimport { EnvOption } from '../config'\nimport { Chain } from '../data'\nimport { Token } from '../data/Token'\nimport { ErrorCode, InvalidParameterError } from '../errors'\nimport { MerkleTree } from '../utils/MerkleUtils'\nimport { getSigHash } from '../utils/ViemUtils'\nimport {\n AddOwnerParams,\n RemoveOwnerParams,\n RuleStruct,\n SessionKeyParams,\n} from './types'\n\nexport const createFeeRecipientAndTokenMerkleTree = async (\n params: SessionKeyParams,\n): Promise<MerkleTree> => {\n const recipients = (params.feeRecipientWhitelist ?? []).map((recipient) =>\n getAddress(recipient),\n )\n\n // TODO: Temporary fallback, remove after refactoring -- Panda\n const options = (globalThis as any).globalEnvOption\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n\n const tokens = await Promise.all(\n (params.feeTokenWhitelist ?? []).map((token) =>\n Token.getAddress(token, chain),\n ),\n )\n const feeRecipientAndTokenMerkleTree = new MerkleTree([\n ...recipients,\n ...tokens,\n ])\n return feeRecipientAndTokenMerkleTree\n}\n\nexport const createTargetSelectorMerkleTree = (\n params: SessionKeyParams,\n): MerkleTree => {\n const selectors: Hex[] = []\n params.actionWhitelist.forEach((actionWhitelistItem) => {\n selectors.push(\n ...actionWhitelistItem.functionWhitelist.map((functionName) =>\n getSigHash(actionWhitelistItem.abi, functionName),\n ),\n )\n })\n const targets = params.targetWhitelist.map((target) => getAddress(target))\n const targetSelectorMerkleTree = new MerkleTree([...targets, ...selectors])\n return targetSelectorMerkleTree\n}\n\nexport const createSessionKeyTransactionParams = async (\n params: SessionKeyParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n if (params.targetWhitelist.length === 0) {\n throw new InvalidParameterError(\n ErrorCode.MissingParameter,\n 'targetWhitelist is required',\n { params },\n 'Provide targetWhitelist when creating a session key.',\n 'https://docs.fun.xyz',\n )\n }\n if (params.userId === undefined) {\n throw new InvalidParameterError(\n ErrorCode.MissingParameter,\n 'userId is required',\n { params },\n 'Provide userId when creating a session key.',\n 'https://docs.fun.xyz',\n )\n }\n let { actionValueLimit, feeValueLimit } = params\n actionValueLimit ??= 0n\n feeValueLimit ??= 0n\n const targetSelectorMerkleTree = createTargetSelectorMerkleTree(params)\n const feeRecipientTokenMerkleTree =\n await createFeeRecipientAndTokenMerkleTree(params)\n const ruleStruct: RuleStruct = {\n deadline: convertTimestampToBigInt(params.deadline),\n targetSelectorMerkleRootHash: targetSelectorMerkleTree.getRootHash(),\n feeRecipientTokenMerkleRootHash: feeRecipientTokenMerkleTree.getRootHash(),\n actionValueLimit,\n feeValueLimit,\n }\n const roleId = params.roleId\n const ruleId = params.ruleId\n const userId = params.userId\n\n const setRuleCallData = RBAC_CONTRACT_INTERFACE.encodeData('setRule', [\n ruleId,\n ruleStruct,\n ])\n const connectRuleAndRoleCallData = RBAC_CONTRACT_INTERFACE.encodeData(\n 'addRuleToRole',\n [roleId, ruleId],\n )\n const connectUserToRoleCallData = RBAC_CONTRACT_INTERFACE.encodeData(\n 'addUserToRole',\n [roleId, userId],\n )\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const rbacAddress = await chain.getAddress('rbacAddress')\n return RBAC_CONTRACT_INTERFACE.encodeTransactionParams(\n rbacAddress,\n 'multiCall',\n [[setRuleCallData, connectRuleAndRoleCallData, connectUserToRoleCallData]],\n )\n}\n\nexport const createSessionUser = async (\n auth: AuthInput,\n params: SessionKeyParams,\n): Promise<SessionKeyAuth> => {\n const targetSelectorMerkleTree = createTargetSelectorMerkleTree(params)\n const feeRecipientAndTokenMerkleTree =\n await createFeeRecipientAndTokenMerkleTree(params)\n return new SessionKeyAuth(\n auth,\n params.ruleId,\n params.roleId,\n targetSelectorMerkleTree,\n feeRecipientAndTokenMerkleTree,\n )\n}\n\nexport const addOwnerTxParams = async (\n params: AddOwnerParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const rbacAddress = await chain.getAddress('rbacAddress')\n return RBAC_CONTRACT_INTERFACE.encodeTransactionParams(\n rbacAddress,\n 'addOwner',\n [pad(params.ownerId, { size: 32 })],\n )\n}\n\nexport const removeOwnerTxParams = async (\n params: RemoveOwnerParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const rbacAddress = await chain.getAddress('rbacAddress')\n return RBAC_CONTRACT_INTERFACE.encodeTransactionParams(\n rbacAddress,\n 'removeOwner',\n [pad(params.ownerId, { size: 32 })],\n )\n}\n\nconst convertTimestampToBigInt = (timestamp: number): bigint => {\n if (\n Math.abs(Date.now() - timestamp) < Math.abs(Date.now() - timestamp * 1000)\n ) {\n // timestamp is in mills\n return BigInt(Math.floor(timestamp)) / 1000n\n } else {\n // timestamp is seconds\n return BigInt(Math.floor(timestamp))\n }\n}\n", "import {\n Address,\n createWalletClient,\n custom,\n Hex,\n http,\n isHex,\n JsonRpcAccount,\n keccak256,\n pad,\n PrivateKeyAccount,\n toBytes,\n TransactionReceipt,\n WalletClient,\n} from 'viem'\n// @ts-ignore\n// eslint-disable-next-line\nimport { privateKeyToAccount } from 'viem/accounts'\n// @ts-ignore\n// eslint-disable-next-line\nimport * as viemChains from 'viem/chains'\n\nimport { Wallet } from '../apis/types'\nimport { getUserWalletIdentities, getUserWalletsByAddr } from '../apis/UserApis'\nimport {\n TransactionData,\n TransactionParams,\n VALID_PRIVATE_KEY_LENGTH,\n} from '../common'\nimport { EnvOption } from '../config'\nimport {\n Chain,\n encodeWalletSignature,\n Operation,\n WalletSignature,\n} from '../data'\nimport {\n ErrorCode,\n InvalidParameterError,\n ResourceNotFoundError,\n} from '../errors'\nimport { getAuthUniqueId, getGasStation } from '../utils'\nimport { isBytes32 } from '../utils/TypeUtils'\nimport { convertProviderToClient, convertSignerToClient } from '../viem'\nimport { AuthInput } from './types'\nconst gasSpecificChain = {\n '137': {\n gasStationUrl: 'https://gasstation.polygon.technology/v2',\n backupPriorityFee: '1000', // 1000 gwei\n backupFee: '200', // 200 gwei\n },\n // TODO: Do the actual calculation for scroll transactions https://docs.scroll.io/en/developers/transaction-fees-on-scroll/\n '534352': {\n gasStationUrl: '',\n backupPriorityFee: 1, // 50 gwei\n backupFee: 1, // 50 gwei\n },\n}\n\nconst preProcessesChains: any = {}\nfor (const key in viemChains) {\n const chain = viemChains[key]\n preProcessesChains[chain.id] = key\n}\n\npreProcessesChains['36865'] = 'funtestnet'\nconst chains = { ...viemChains }\nchains['funtestnet'] = {\n id: 36865,\n name: 'Fun Testnet',\n network: 'tenderly',\n nativeCurrency: { name: 'ethereum', symbol: 'ETH', decimals: 18 },\n rpcUrls: { default: { http: [Array] }, public: { http: [Array] } },\n}\n\nexport class Auth {\n authId?: string\n signer?: PrivateKeyAccount | JsonRpcAccount\n client?: WalletClient\n inited = false\n account?: Address\n constructor(authInput: AuthInput) {\n if (authInput.web2AuthId) {\n this.authId = authInput.web2AuthId\n }\n\n if (authInput.client) {\n this.client = authInput.client\n } else if (authInput.windowEth) {\n this.client = createWalletClient({\n transport: custom(authInput.windowEth),\n })\n } else if (authInput.rpc) {\n this.client = createWalletClient({\n transport: http(authInput.rpc),\n })\n } else if (authInput.provider) {\n this.client = convertProviderToClient({ provider: authInput.provider })\n } else if (authInput.signer) {\n this.client = convertSignerToClient({ signer: authInput.signer })\n } else if (authInput.privateKey) {\n let privateKey: Hex\n if (isBytes32(authInput.privateKey)) {\n privateKey = authInput.privateKey as Hex\n } else if (\n !isHex(authInput.privateKey) &&\n authInput.privateKey.length === VALID_PRIVATE_KEY_LENGTH\n ) {\n privateKey = `0x${authInput.privateKey}`\n } else {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'privateKey is not a valid one',\n authInput.privateKey,\n 'Provide valid privateKey string',\n 'https://docs.fun.xyz/how-to-guides/configure-account',\n )\n }\n this.signer = privateKeyToAccount(privateKey)\n } else {\n throw new InvalidParameterError(\n ErrorCode.MissingParameter,\n 'valid authInput is required',\n authInput,\n 'Provide viem client, privateKey, window eth (check viem.sh), rpc signer, provider, or signer when constructing Auth',\n 'https://docs.fun.xyz/how-to-guides/configure-account',\n )\n }\n }\n\n async init(): Promise<void> {\n if (this.inited) return\n if (this.client) {\n const address = await this.client.requestAddresses()\n this.account = address[0]\n } else if (this.signer) {\n this.account = this.signer.address\n }\n this.authId ??= this.account\n this.inited = true\n }\n\n /**\n * Signs a hash using the stored signer and returns the signature.\n * @param {Hex} hash - The hash to be signed.\n * @param {boolean} isGroupOp - Whether the operation is a group operation (default: false).\n * @returns {Promise<Hex>} The signature of the hash.\n */\n async signHash(hash: Hex, isGroupOp = false): Promise<Hex> {\n await this.init()\n let signature\n if (this.signer?.type === 'local') {\n signature = await this.signer.signMessage({\n message: { raw: toBytes(hash) },\n })\n } else if (this.client && this.account) {\n signature = await this.client.signMessage({\n account: this.account,\n message: { raw: toBytes(hash) },\n })\n } else {\n throw new Error('No signer or client')\n }\n if (isGroupOp) {\n return signature\n } else {\n const walletSignature: WalletSignature = {\n userId: await this.getUserId(),\n signature,\n }\n return encodeWalletSignature(walletSignature)\n }\n }\n\n /**\n * Signs an operation using the stored signer and returns the signature.\n * @param {Operation} operation - The operation to be signed.\n * @param {Chain} chain - The chain instance associated with the operation.\n * @param {boolean} isGroupOp - Whether the operation is a group operation (default: false).\n * @returns {Promise<Hex>} The signature of the operation.\n */\n async signOp(\n operation: Operation,\n chain: Chain,\n isGroupOp = false,\n ): Promise<Hex> {\n await this.init()\n const opHash = await operation.getOpHash(chain)\n return await this.signHash(opHash, isGroupOp)\n }\n\n /**\n * Retrieves the address associated with the initialized signer or client.\n * @returns {Promise<Address>} The address associated with the signer or client.\n * @throws {Error} If no signer or client is available.\n */\n async getAddress(): Promise<Address> {\n await this.init()\n if (this.account) return this.account\n throw new Error('No signer or client')\n }\n\n /**\n * Retrieves the user ID by padding the address associated with the signer or client.\n * @returns {Promise<Hex>} The padded user ID.\n */\n async getUserId(): Promise<Hex> {\n return pad(await this.getAddress(), { size: 32 }).toLowerCase() as Hex\n }\n\n /**\n * Generates an estimate gas signature for an operation using the provided user ID.\n * @param {string} userId - The user ID to generate the estimate gas signature for.\n * @param {Operation} _ - The operation (not used in this method).\n * @returns {Promise<Hex>} The estimate gas signature.\n */\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getEstimateGasSignature(userId: string, _: Operation): Promise<Hex> {\n await this.init()\n const walletSignature: WalletSignature = {\n userId: pad(userId as Hex, { size: 32 }),\n signature: pad('0x', { size: 65 }),\n }\n return encodeWalletSignature(walletSignature)\n }\n\n /**\n * Retrieves a unique ID for the wallet based on an index and optional skipDBActions flag.\n * @param {number} index - The index for generating the unique ID (default: 0).\n * @param {boolean} skipDBActions - Whether to skip database actions (default: false).\n * @returns {Promise<Hex>} The generated unique ID for the wallet.\n */\n async getWalletUniqueId(index = 0, skipDBActions = false): Promise<Hex> {\n await this.init()\n const authUniqueId = await getAuthUniqueId(\n this.authId!,\n await this.getAddress(),\n skipDBActions,\n )\n return keccak256(toBytes(`${authUniqueId}-${index}`))\n }\n\n /**\n * Sends a transaction with the provided transaction data and options.\n * @param {TransactionParams} txData - The transaction data including 'to', 'data', and 'value'.\n * @param {EnvOption} options - The environment options (default: globalEnvOption).\n * @returns {Promise<TransactionReceipt>} The transaction receipt.\n */\n async sendTx(\n txData: TransactionParams,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionReceipt> {\n await this.init()\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const chainId = await chain.getChainId()\n const { to, data } = txData\n let { value } = txData\n if (!chain || !chainId) {\n throw new InvalidParameterError(\n ErrorCode.MissingParameter,\n 'chain object is missing or incorrect',\n { options, chainId },\n 'Provide proper chain information from options field',\n 'https://docs.fun.xyz',\n )\n }\n const client = await chain.getClient()\n let tx\n value ??= 0n\n let txClient\n if (this.client) txClient = this.client\n else {\n txClient = createWalletClient({\n account: this.signer!,\n transport: http(client.transport.url),\n chain: chains[preProcessesChains[await chain.getChainId()]],\n })\n }\n let maxPriorityFee, maxFee\n\n if ((gasSpecificChain as any)[chainId]) {\n try {\n const {\n standard: { maxPriorityFee: maxPriorityFee1, maxFee: maxFee1 },\n } = await getGasStation(gasSpecificChain[chainId].gasStationUrl)\n maxPriorityFee = maxPriorityFee1\n maxFee = maxFee1\n } catch (e) {\n maxPriorityFee = gasSpecificChain[chainId].backupPriorityFee\n maxFee = gasSpecificChain[chainId].backupFee\n }\n\n tx = {\n to,\n value: BigInt(value),\n data,\n maxFeePerGas: BigInt(Math.floor(maxFee * 1e9)),\n maxPriorityFeePerGas: BigInt(Math.floor(maxPriorityFee * 1e9)),\n }\n } else {\n tx = { to, value: BigInt(value), data }\n }\n\n const action = {\n ...tx,\n account: this.signer ?? this.account,\n chain: chains[preProcessesChains[await chain.getChainId()]],\n }\n const hash = await txClient.sendTransaction(action)\n\n let receipt\n if (chainId !== '1' && chainId !== '5') {\n receipt = await client.waitForTransactionReceipt({\n hash,\n timeout: 30_000,\n })\n } else {\n // ethereum mainnet is crazy slow and viem will throw out error\n const maxRetry = 10\n let retryCount = 0\n while (retryCount < maxRetry) {\n try {\n receipt = await client.waitForTransactionReceipt({\n hash,\n timeout: 30_000,\n })\n break\n } catch (e) {\n retryCount++\n await new Promise((r) => setTimeout(r, 5000))\n }\n }\n }\n return receipt\n }\n\n /**\n * Sends an array of transactions and returns an array of corresponding transaction receipts.\n * @param {TransactionData[]} txs - An array of transaction data.\n * @returns {Promise<TransactionReceipt[]>} An array of transaction receipts.\n */\n async sendTxs(txs: TransactionData[]): Promise<TransactionReceipt[]> {\n const receipts: TransactionReceipt[] = []\n for (const tx of txs) {\n if (tx.chain) {\n receipts.push(await this.sendTx(tx, { chain: tx.chain }))\n } else {\n receipts.push(await this.sendTx(tx))\n }\n }\n return receipts\n }\n\n /**\n * Retrieves the user IDs of the current auth object associated with a wallet address on a specific chain.\n * @param {Address} wallet - The wallet address for which to retrieve user IDs.\n * @param {string} chainId - The chain identifier.\n * @returns {Promise<Hex[]>} An array of user IDs associated with the wallet address.\n */\n async getUserIds(wallet: Address, chainId: string): Promise<Hex[]> {\n await this.init()\n return await getUserWalletIdentities(this.authId!, chainId, wallet)\n }\n\n /**\n * Retrieves the wallets associated with the current auth object.\n * @param {string} [chainId] - Optional chain identifier.\n * @returns {Promise<Wallet[]>} An array of wallet objects associated with the address.\n */\n async getWallets(chainId?: string): Promise<Wallet[]> {\n await this.init()\n try {\n return await getUserWalletsByAddr(await this.getAddress(), chainId)\n } catch (err) {\n if (err instanceof ResourceNotFoundError) {\n return []\n }\n throw err\n }\n }\n}\n", "import { Address, Hex, InvalidParameterError } from 'viem'\n\nimport { API_URL } from '../common/constants'\nimport { ResourceNotFoundError } from '../errors'\nimport { sendGetRequest, sendPostRequest } from '../utils/ApiUtils'\nimport { Wallet } from './types'\n\nexport async function createUser(\n authId: string,\n addr: string,\n method: string,\n userUniqueId: string,\n): Promise<void> {\n await sendPostRequest(API_URL, 'user', {\n authId,\n addr,\n method,\n userUniqueId,\n })\n}\n\nexport async function getUserUniqueId(authId: string): Promise<string> {\n try {\n return (await sendGetRequest(API_URL, `user/auth/${authId}/unique-id`))\n .userUniqueId\n } catch (err) {\n if (err instanceof ResourceNotFoundError) {\n return ''\n }\n throw err\n }\n}\n\nexport async function getUserAddr(authId: string): Promise<string> {\n return (await sendGetRequest(API_URL, `user/auth/${authId}/addr`)).addr\n}\n\nexport async function getUserWalletsByAddr(\n addr: string,\n chainId?: string,\n): Promise<Wallet[]> {\n const endpoint = chainId\n ? `user/addr/${addr}/wallets?chainId=${chainId}`\n : `user/addr/${addr}/wallets`\n return (await sendGetRequest(API_URL, endpoint)).wallets\n}\n\nexport async function getUserAuthIdByAddr(addr: string): Promise<string> {\n return (await sendGetRequest(API_URL, `user/addr/${addr}/authId`)).authId\n}\n\nexport async function addUserToWallet(\n authId: string,\n chainId: string,\n walletAddr: Address,\n userIds: Hex[],\n walletUniqueId?: string,\n): Promise<void> {\n try {\n await sendPostRequest(\n API_URL,\n `user/auth/${authId}/chain/${chainId}/wallet`,\n {\n walletAddr,\n userIds,\n walletUniqueId,\n },\n )\n } catch (err) {\n if (err instanceof InvalidParameterError) {\n // swallow the error if the wallet already exists.\n return\n }\n }\n}\n\n// return userIds of the specificed Wallet.\nexport async function getUserWalletIdentities(\n authId: string,\n chainId: string,\n walletAddr: Address,\n): Promise<Hex[]> {\n return (\n (\n await sendGetRequest(\n API_URL,\n `user/auth/${authId}/chain/${chainId}/wallet/${walletAddr}/identities`,\n )\n ).ids ?? []\n )\n}\n", "import IUniswapV3PoolABI from '@uniswap/v3-core/artifacts/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json' assert { type: 'json' }\nimport { padHex } from 'viem'\nimport {\n arbitrum,\n arbitrumSepolia,\n base,\n goerli,\n mainnet,\n mantle,\n optimism,\n polygon,\n scroll,\n zkSync,\n} from 'viem/chains'\n\nimport APPROVE_AND_EXEC_CONTRACT from '../abis/ApproveAndExec.json' assert { type: 'json' }\nimport APPROVE_AND_SWAP_CONTRACT from '../abis/ApproveAndSwap.json' assert { type: 'json' }\nimport CHECKOUT_PAYMASTER_CONTRACT from '../abis/CheckoutPaymaster.json' assert { type: 'json' }\nimport ENTRYPOINT_CONTRACT from '../abis/EntryPoint.json' assert { type: 'json' }\nimport ERC20_CONTRACT from '../abis/ERC20.json' assert { type: 'json' }\nimport ERC_721_CONTRACT from '../abis/ERC721.json' assert { type: 'json' }\nimport ESTIMATION_PAYMASTER_CONTRACT from '../abis/EstimationPaymaster.json' assert { type: 'json' }\nimport FEE_PERCENT_ORACLE_CONTRACT from '../abis/FeePercentOracle.json' assert { type: 'json' }\nimport FUN_WALLET_CONTRACT from '../abis/FunWallet.json' assert { type: 'json' }\nimport FACTORY_CONTRACT from '../abis/FunWalletFactory.json' assert { type: 'json' }\nimport GASLESS_PAYMASTER_CONTRACT from '../abis/GaslessPaymaster.json' assert { type: 'json' }\nimport WITHDRAW_QUEUE_CONTRACT from '../abis/LidoWithdrawQueue.json' assert { type: 'json' }\nimport ROLE_BASED_ACCESS_CONTROL_CONTRACT from '../abis/RoleBasedAccessControl.json' assert { type: 'json' }\nimport TEST_NFT_CONTRACT from '../abis/TestNFT.json' assert { type: 'json' }\nimport TOKEN_PAYMASTER_CONTRACT from '../abis/TokenPaymaster.json' assert { type: 'json' }\nimport TOKEN_PRICE_ORACLE_CONTRACT from '../abis/TokenPriceOracle.json' assert { type: 'json' }\nimport UNISWAPV2FACTORY_CONTRACT from '../abis/UniswapV2Factory.json' assert { type: 'json' }\nimport UNISWAPV2ROUTER02_CONTRACT from '../abis/UniswapV2Router02.json' assert { type: 'json' }\nimport UNISWAP_V3_LIMIT_ORDER_CONTRACT from '../abis/UniswapV3LimitOrder.json' assert { type: 'json' }\nimport UNIV3_FACTORY from '../abis/univ3factory.json' assert { type: 'json' }\nimport UNIV3_QUOTER from '../abis/univ3quoter.json' assert { type: 'json' }\nimport UNIV3_ROUTER from '../abis/univ3router.json' assert { type: 'json' }\nimport USER_AUTHENTICATION_CONTRACT from '../abis/UserAuthentication.json' assert { type: 'json' }\nimport { ContractInterface } from '../viem/ContractInterface'\n\n// local environment\nexport const LOCAL_API_URL = 'http://127.0.0.1:3000'\n\n// prod\nlet API_URL = 'https://api.fun.xyz/v1'\n\nswitch (process.env.NODE_ENV) {\n case 'staging':\n API_URL = 'https://api.fun.xyz/staging/v1'\n break\n case 'testing':\n API_URL = 'https://api.fun.xyz/testing/v1'\n break\n case 'local':\n API_URL = LOCAL_API_URL\n break\n}\n\nexport { API_URL }\n\nexport const DASHBOARD_API_URL = 'https://api.fun.xyz/dashboard'\nexport const BASE_WRAP_TOKEN_ADDR = {\n '1': {\n weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n '5': {\n weth: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',\n },\n '10': {\n weth: '0x4200000000000000000000000000000000000006',\n },\n '137': {\n wmatic: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270',\n },\n '5000': {\n weth: '0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111',\n },\n '8453': {\n weth: '0x4200000000000000000000000000000000000006',\n },\n '36865': {\n weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n '42161': {\n weth: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n },\n '421614': {\n weth: '0x980b62da83eff3d4576c647993b0c1d7faf17c73',\n },\n '43113': {\n weth: '0x1D308089a2D1Ced3f1Ce36B1FcaF815b07217be3',\n },\n '534352': {\n weth: '0x5300000000000000000000000000000000000004',\n },\n}\n\n// When update this, also remember to update the address in api service\nexport const FUN_GASLESS_SPONSOR_ADDRESS =\n '0xCB5D0b4569A39C217c243a436AC3feEe5dFeb9Ad'\nexport const FUN_TOKEN_SPONSOR_ADDRESS =\n '0x40C0cCa76088D45106c2D74D0B4B6405865f22De'\n\nexport const TOKEN_SPONSOR_SUPPORT_CHAINS = [\n '1',\n '5',\n '10',\n '137',\n '8453',\n '42161',\n '421614',\n // No Mantle Support (5000)\n // No Scroll Support (534352)\n]\nexport const GASLESS_SPONSOR_SUPPORT_CHAINS = ['5']\nconst CHECKOUT_PAYMASTER_ADDRESS_BY_CHAIN = {\n '1': '0xAEb04Eb8574CB29E2D7F94fC24fEAfb5469fDaBF',\n '5': '0x30809b742D0D51B8d5AEb630406cF299cb548E57',\n '137': '0xD649aC385EfE8CE69EcE9D2E61aE602e2893C586',\n '5000': '0x036E9F3e187A074405fA54eD2f58473AC465Bf4c',\n '8453': '0xA86096145c4ee02d08aEB434e3125d0D1b442495',\n '42161': '0x784DEeD2F7182E0e92438879bF1Cc3CD6542F8f7',\n '421614': '0x0B471a8fF3D038DED6d515741C447976d25E2976',\n}\nexport const CHECKOUT_SPONSOR_SUPPORT_CHAINS = Object.keys(\n CHECKOUT_PAYMASTER_ADDRESS_BY_CHAIN,\n)\n\nexport const AddressZero = padHex('0x', { size: 20 })\nexport const HashZero = padHex('0x', { size: 32 })\n\n// abis\nexport const APPROVE_AND_EXEC_ABI = APPROVE_AND_EXEC_CONTRACT['abi']\nexport const APPROVE_AND_SWAP_ABI = APPROVE_AND_SWAP_CONTRACT['abi']\nexport const ENTRYPOINT_ABI = ENTRYPOINT_CONTRACT['abi']\nexport const ERC20_ABI = ERC20_CONTRACT['abi']\nexport const WALLET_ABI = FUN_WALLET_CONTRACT['abi']\nexport const FACTORY_ABI = FACTORY_CONTRACT['abi']\nexport const GASLESS_PAYMASTER_ABI = GASLESS_PAYMASTER_CONTRACT['abi']\nexport const TOKEN_PAYMASTER_ABI = TOKEN_PAYMASTER_CONTRACT['abi']\nexport const CHECKOUT_PAYMASTER_ABI = CHECKOUT_PAYMASTER_CONTRACT['abi']\nexport const WITHDRAW_QUEUE_ABI = WITHDRAW_QUEUE_CONTRACT['abi']\nexport const ERC_721_ABI = ERC_721_CONTRACT['abi']\nexport const UNISWAP_V3_LIMIT_ORDER_ABI = UNISWAP_V3_LIMIT_ORDER_CONTRACT['abi']\nexport const UNISWAPV2FACTORY_ABI = UNISWAPV2FACTORY_CONTRACT['abi']\nexport const UNISWAPV2ROUTER02_ABI = UNISWAPV2ROUTER02_CONTRACT['abi']\nexport const ROLE_BASED_ACCESS_CONTROL_ABI =\n ROLE_BASED_ACCESS_CONTROL_CONTRACT['abi']\nexport const USER_AUTHENTICATION_ABI = USER_AUTHENTICATION_CONTRACT['abi']\nexport const ESTIMATION_PAYMASTER_ABI = ESTIMATION_PAYMASTER_CONTRACT['abi']\n\n// contract interface\nexport const ENTRYPOINT_CONTRACT_INTERFACE = new ContractInterface(\n ENTRYPOINT_ABI,\n)\nexport const ERC721_CONTRACT_INTERFACE = new ContractInterface(ERC_721_ABI)\nexport const ERC20_CONTRACT_INTERFACE = new ContractInterface(ERC20_ABI)\nexport const FACTORY_CONTRACT_INTERFACE = new ContractInterface(FACTORY_ABI)\nexport const GASLESS_PAYMASTER_CONTRACT_INTERFACE = new ContractInterface(\n GASLESS_PAYMASTER_ABI,\n)\nexport const TOKEN_PAYMASTER_CONTRACT_INTERFACE = new ContractInterface(\n TOKEN_PAYMASTER_ABI,\n)\nexport const CHECKOUT_PAYMASTER_CONTRACT_INTERFACE = new ContractInterface(\n CHECKOUT_PAYMASTER_ABI,\n)\nexport const WALLET_CONTRACT_INTERFACE = new ContractInterface(WALLET_ABI)\nexport const POOL_CONTRACT_INTERFACE = new ContractInterface(\n IUniswapV3PoolABI['abi'],\n)\nexport const APPROVE_AND_EXEC_CONTRACT_INTERFACE = new ContractInterface(\n APPROVE_AND_EXEC_ABI,\n)\nexport const UNISWAPV2FACTORY_INTERFACE = new ContractInterface(\n UNISWAPV2FACTORY_ABI,\n)\nexport const UNISWAPV2ROUTER02_INTERFACE = new ContractInterface(\n UNISWAPV2ROUTER02_ABI,\n)\nexport const RBAC_CONTRACT_INTERFACE = new ContractInterface(\n ROLE_BASED_ACCESS_CONTROL_ABI,\n)\nexport const USER_AUTHENTICATION_CONTRACT_INTERFACE = new ContractInterface(\n USER_AUTHENTICATION_ABI,\n)\nexport const UNISWAP_V3_LIMIT_ORDER_CONTRACT_INTERFACE = new ContractInterface(\n UNISWAP_V3_LIMIT_ORDER_ABI,\n)\n\nexport const CONTRACT_ADDRESSES = {\n approveAndExecAddress: APPROVE_AND_EXEC_CONTRACT['addresses'],\n tokenSwapAddress: APPROVE_AND_SWAP_CONTRACT['addresses'],\n entryPointAddress: ENTRYPOINT_CONTRACT['addresses'],\n factoryAddress: FACTORY_CONTRACT['addresses'],\n gaslessPaymasterAddress: GASLESS_PAYMASTER_CONTRACT['addresses'],\n checkoutPaymasterAddress: CHECKOUT_PAYMASTER_ADDRESS_BY_CHAIN,\n estimationPaymasterAddress: ESTIMATION_PAYMASTER_CONTRACT['addresses'],\n tokenPaymasterAddress: TOKEN_PAYMASTER_CONTRACT['addresses'],\n oracle: TOKEN_PRICE_ORACLE_CONTRACT['addresses'],\n userAuthAddress: USER_AUTHENTICATION_CONTRACT['addresses'],\n rbacAddress: ROLE_BASED_ACCESS_CONTROL_CONTRACT['addresses'],\n feeOracle: FEE_PERCENT_ORACLE_CONTRACT['addresses'],\n uniswapv3LimitOrder: UNISWAP_V3_LIMIT_ORDER_CONTRACT['addresses'],\n univ3factory: UNIV3_FACTORY['addresses'],\n univ3quoter: UNIV3_QUOTER['addresses'],\n univ3router: UNIV3_ROUTER['addresses'],\n UniswapV2Factory: UNISWAPV2FACTORY_CONTRACT['addresses'],\n UniswapV2Router02: UNISWAPV2ROUTER02_CONTRACT['addresses'],\n TestNFT: TEST_NFT_CONTRACT['addresses'],\n funGaslessSponsorAddress: { '5': FUN_GASLESS_SPONSOR_ADDRESS },\n funTokenSponsorAddress: {\n '1': FUN_TOKEN_SPONSOR_ADDRESS,\n '5': FUN_TOKEN_SPONSOR_ADDRESS,\n '10': FUN_TOKEN_SPONSOR_ADDRESS,\n '137': FUN_TOKEN_SPONSOR_ADDRESS,\n '8453': FUN_TOKEN_SPONSOR_ADDRESS,\n '42161': FUN_TOKEN_SPONSOR_ADDRESS,\n '421614': FUN_TOKEN_SPONSOR_ADDRESS,\n // No Mantle Support (5000)\n // No Scroll Support (534352)\n },\n}\n\nexport const gasSpecificChain = {\n '137': {\n gasStationUrl: 'https://gasstation.polygon.technology/v2',\n backupPriorityFee: '1000', // 1000 gwei\n backupFee: '200', // 200 gwei\n },\n}\n\nexport const FUN_FAUCET_URL = 'https://api.fun.xyz/demo-faucet'\n\nexport const ETH_TRANSFER_SELECTOR = '0x00000000'\n\nexport const VALID_PRIVATE_KEY_LENGTH = 64\nexport const BYTES32_LENGTH = 66\n// Use the paymasterAndData from pimlico for gas estimation\nexport const BASE_PIMLICO_PAYMASTER_AND_DATA_ESTIMATION =\n '0xa880eae8900eb59bf7dad9bdb741a086238adca900000000000000000000000000000000000000000000000000000101010101010000000000000000000000000000000000000000000000000000000000000000cd91f19f0f19ce862d7bec7b7d9b95457145afc6f639c28fd0360f488937bfa41e6eedcd3a46054fd95fcd0e3ef6b0bc0a615c4d975eef55c8a3517257904d5b1c'\nexport const OPTIMISM_PIMLICO_PAYMASTER_AND_DATA_ESTIMATION =\n '0x4Df91e173A6CdC74EfeF6fC72bb5Df1E8A8d758200000000000000000000000000000000000000000000000000000101010101010000000000000000000000000000000000000000000000000000000000000000cd91f19f0f19ce862d7bec7b7d9b95457145afc6f639c28fd0360f488937bfa41e6eedcd3a46054fd95fcd0e3ef6b0bc0a615c4d975eef55c8a3517257904d5b1c'\nexport const ETHEREUM_PIMLICO_PAYMASTER_AND_DATA_ESTIMATION =\n '0x67F21bE69A16c314a0b7Da537309b2f3ADdDE03100000000000000000000000000000000000000000000000000000101010101010000000000000000000000000000000000000000000000000000000000000000cd91f19f0f19ce862d7bec7b7d9b95457145afc6f639c28fd0360f488937bfa41e6eedcd3a46054fd95fcd0e3ef6b0bc0a615c4d975eef55c8a3517257904d5b1c'\n\nexport const DYDX_MAINNET_CHAIN_ID = 1511490300\n// Define dydx mainnet chain in pseudo-evm / wagmi compliant format\nexport const dydxChain = {\n id: DYDX_MAINNET_CHAIN_ID,\n name: 'dYdX',\n nativeCurrency: {\n symbol: 'DYDX',\n decimals: 18,\n name: 'dYdX Staking Coin',\n },\n rpcUrls: {\n default: {\n http: ['https://dydx-dao-rpc.polkachu.com:443\t'],\n },\n },\n blockExplorers: {\n default: {\n name: 'Mintscan',\n url: 'https://www.mintscan.io/dydx',\n apiUrl: '',\n },\n },\n contracts: {\n ensRegistry: {\n address: '0x' as `0x${string}`,\n },\n ensUniversalResolver: {\n address: '0x' as `0x${string}`,\n blockCreated: -1,\n },\n multicall3: {\n address: '0x' as `0x${string}`,\n blockCreated: -1,\n },\n },\n}\n// List of stablecoin symbles\n/* There are a lot more stableocoins but these are good to start */\nexport const STABLECOIN_SYMBOLS = ['USDC', 'USDT', 'DAI']\n/**\n * Info on the supported chains of FunkitConnect\n * Added into coresdk because it is used in here too.\n */\nexport const FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO = {\n /** MAINNETS **/\n [mainnet.id.toString()]: {\n name: mainnet.name,\n nativeCurrency: {\n symbol: mainnet.nativeCurrency.symbol,\n decimals: mainnet.nativeCurrency.decimals,\n name: mainnet.nativeCurrency.name,\n },\n chainInfo: mainnet,\n explorerInfo: mainnet.blockExplorers.default,\n isCheckoutSupported: true,\n checkoutAssetWhitelist: ['*'],\n isFunWalletSupported: true,\n isMainnet: true,\n moonpayChainName: '',\n pickPriority: 4,\n isStandardEvmAddress: true,\n },\n [base.id.toString()]: {\n name: base.name,\n nativeCurrency: {\n symbol: base.nativeCurrency.symbol,\n decimals: base.nativeCurrency.decimals,\n name: base.nativeCurrency.name,\n },\n chainInfo: base,\n explorerInfo: base.blockExplorers.default,\n isCheckoutSupported: true,\n checkoutAssetWhitelist: ['*'],\n isFunWalletSupported: true,\n isMainnet: true,\n moonpayChainName: 'base',\n pickPriority: 2,\n isStandardEvmAddress: true,\n },\n [polygon.id.toString()]: {\n name: polygon.name,\n nativeCurrency: {\n symbol: polygon.nativeCurrency.symbol,\n decimals: polygon.nativeCurrency.decimals,\n name: polygon.nativeCurrency.name,\n },\n coreToken: {\n symbol: 'MATIC',\n decimals: 18,\n name: 'MATIC',\n },\n chainInfo: polygon,\n explorerInfo: polygon.blockExplorers.default,\n isCheckoutSupported: true,\n checkoutAssetWhitelist: ['*'],\n isFunWalletSupported: true,\n isMainnet: true,\n moonpayChainName: 'polygon',\n pickPriority: 1,\n isStandardEvmAddress: true,\n },\n [arbitrum.id.toString()]: {\n name: 'Arbitrum', // arbitrum.name returns 'Arbitrum One' which is too wordy for us.\n nativeCurrency: {\n symbol: arbitrum.nativeCurrency.symbol,\n decimals: arbitrum.nativeCurrency.decimals,\n name: arbitrum.nativeCurrency.name,\n },\n coreToken: {\n symbol: 'ARB',\n decimals: 18,\n name: 'Arbitrium',\n },\n chainInfo: arbitrum,\n explorerInfo: arbitrum.blockExplorers.default,\n isCheckoutSupported: true,\n checkoutAssetWhitelist: ['*'],\n isFunWalletSupported: true,\n isMainnet: true,\n moonpayChainName: 'arbitrum',\n pickPriority: 3,\n isStandardEvmAddress: true,\n },\n [optimism.id.toString()]: {\n name: optimism.name,\n nativeCurrency: {\n symbol: optimism.nativeCurrency.symbol,\n decimals: optimism.nativeCurrency.decimals,\n name: optimism.nativeCurrency.name,\n },\n coreToken: {\n symbol: 'OP',\n decimals: 18,\n name: 'Optimism',\n },\n chainInfo: optimism,\n explorerInfo: optimism.blockExplorers.default,\n // Not supported for checkouts on backend yet\n isCheckoutSupported: false,\n checkoutAssetWhitelist: [],\n isFunWalletSupported: true,\n isMainnet: true,\n moonpayChainName: 'optimism',\n // Not supported for checkouts yet\n pickPriority: Number.MAX_SAFE_INTEGER,\n isStandardEvmAddress: true,\n },\n [zkSync.id.toString()]: {\n name: 'zkSync',\n nativeCurrency: {\n symbol: zkSync.nativeCurrency.symbol,\n decimals: zkSync.nativeCurrency.decimals,\n name: zkSync.nativeCurrency.name,\n },\n coreToken: {\n symbol: 'ZK',\n decimals: 18,\n name: 'zkSync',\n },\n chainInfo: zkSync,\n explorerInfo: zkSync.blockExplorers.default,\n isCheckoutSupported: true,\n checkoutAssetWhitelist: ['*'],\n isFunWalletSupported: false,\n isMainnet: true,\n moonpayChainName: 'arbitrum', // default to arbitrum for zksync era on moonpay\n pickPriority: 5,\n isStandardEvmAddress: true,\n },\n [mantle.id.toString()]: {\n name: mantle.name,\n nativeCurrency: {\n symbol: mantle.nativeCurrency.symbol,\n decimals: mantle.nativeCurrency.decimals,\n name: mantle.nativeCurrency.name,\n },\n coreToken: {\n symbol: 'MNT',\n decimals: 18,\n name: 'Mantle',\n },\n chainInfo: mantle,\n explorerInfo: mantle.blockExplorers.default,\n isCheckoutSupported: true,\n checkoutAssetWhitelist: [\n // USDC.e\n '0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9'.toLowerCase(),\n // USDe\n '0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34'.toLowerCase(),\n ],\n isFunWalletSupported: true,\n isMainnet: true,\n moonpayChainName: 'arbitrum', // default to arbitrum for mantle on moonpay\n pickPriority: 6,\n isStandardEvmAddress: false,\n },\n [dydxChain.id.toString()]: {\n name: dydxChain.name,\n nativeCurrency: {\n symbol: dydxChain.nativeCurrency.symbol,\n decimals: dydxChain.nativeCurrency.decimals,\n name: dydxChain.nativeCurrency.name,\n },\n chainInfo: dydxChain,\n explorerInfo: dydxChain.blockExplorers.default,\n // We cannot pay with dYdX / cosmos tokens yet\n isCheckoutSupported: false,\n checkoutAssetWhitelist: [\n // USDC\n '0x8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5'.toLowerCase(),\n ],\n isFunWalletSupported: false,\n isMainnet: true,\n moonpayChainName: 'arbitrum', // default to arbitrum for dydx on moonpay\n pickPriority: Number.MAX_SAFE_INTEGER,\n isStandardEvmAddress: false,\n },\n [scroll.id.toString()]: {\n name: scroll.name,\n nativeCurrency: {\n symbol: scroll.nativeCurrency.symbol,\n decimals: scroll.nativeCurrency.decimals,\n name: scroll.nativeCurrency.name,\n },\n chainInfo: scroll,\n explorerInfo: scroll.blockExplorers.default,\n isCheckoutSupported: false,\n checkoutAssetWhitelist: [\n // USDC\n '0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4'.toLowerCase(),\n // USDT\n '0xf55bec9cafdbe8730f096aa55dad6d22d44099df'.toLowerCase(),\n ],\n isFunWalletSupported: true,\n isMainnet: true,\n moonpayChainName: 'arbitrum', // default to arbitrum for scroll on moonpay\n pickPriority: 7,\n isStandardEvmAddress: false,\n },\n /** TESTNETS **/\n [goerli.id.toString()]: {\n name: goerli.name,\n nativeCurrency: {\n symbol: goerli.nativeCurrency.symbol,\n decimals: goerli.nativeCurrency.decimals,\n name: goerli.nativeCurrency.name,\n },\n chainInfo: goerli,\n explorerInfo: goerli.blockExplorers.default,\n isCheckoutSupported: true,\n checkoutAssetWhitelist: ['*'],\n isFunWalletSupported: true,\n // testnet has no fiat checkouts supported\n isMainnet: false,\n moonpayChainName: null,\n pickPriority: Number.MAX_SAFE_INTEGER,\n isStandardEvmAddress: true,\n },\n [arbitrumSepolia.id.toString()]: {\n name: arbitrumSepolia.name,\n nativeCurrency: {\n symbol: arbitrumSepolia.nativeCurrency.symbol,\n decimals: arbitrumSepolia.nativeCurrency.decimals,\n name: arbitrumSepolia.nativeCurrency.name,\n },\n chainInfo: arbitrumSepolia,\n explorerInfo: {\n name: 'Arbiscan',\n url: 'https://sepolia.arbiscan.io',\n },\n isCheckoutSupported: true,\n checkoutAssetWhitelist: ['*'],\n isFunWalletSupported: true,\n // testnet has no fiat checkouts supported\n isMainnet: false,\n moonpayChainName: null,\n pickPriority: Number.MAX_SAFE_INTEGER,\n isStandardEvmAddress: false,\n },\n}\n\nexport const FUNKIT_CONNECT_SUPPORTED_CHAINS_ID_LIST = Object.keys(\n FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO,\n)\n\nexport const FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO_LIST = Object.values(\n FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO,\n).map((item) => item.chainInfo)\n\n// checkout supported + mainnet\nexport const FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST =\n FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO_LIST.filter(\n (chainInfo) =>\n FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO[chainInfo.id]?.isCheckoutSupported &&\n FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO[chainInfo.id]?.isMainnet,\n )\n\n// The native currency fake address used for checkout operation in funkitconnect (socket-specific requirement)\n// Reference: https://fun-xyz.slack.com/archives/C04Q5T1MQP3/p1701901749677069?thread_ts=1701829172.857709&cid=C04Q5T1MQP3\nexport const FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS =\n '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'\n", "{\n \"name\": \"ApproveAndExec\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"dest\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"executeData\",\n \"type\": \"bytes\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"approveData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"ApproveAndExecute\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"EMPTY_STATE\",\n \"outputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"dest\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"value\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"executeData\", \"type\": \"bytes\" },\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"bytes\", \"name\": \"approveData\", \"type\": \"bytes\" }\n ],\n \"name\": \"approveAndExecute\",\n \"outputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }],\n \"name\": \"execute\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"key\", \"type\": \"bytes32\" }\n ],\n \"name\": \"getState\",\n \"outputs\": [\n { \"internalType\": \"bytes\", \"name\": \"state\", \"type\": \"bytes\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"moduleId\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"payFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"addresses\": {\n \"1\": \"0xD953Eda57EAB69F2EB0103bffA9acc66eA98e0aB\",\n \"5\": \"0xD953Eda57EAB69F2EB0103bffA9acc66eA98e0aB\",\n \"10\": \"0xD953Eda57EAB69F2EB0103bffA9acc66eA98e0aB\",\n \"137\": \"0xD953Eda57EAB69F2EB0103bffA9acc66eA98e0aB\",\n \"8453\": \"0xD953Eda57EAB69F2EB0103bffA9acc66eA98e0aB\",\n \"36865\": \"0xD953Eda57EAB69F2EB0103bffA9acc66eA98e0aB\",\n \"42161\": \"0xD953Eda57EAB69F2EB0103bffA9acc66eA98e0aB\",\n \"421614\": \"0x587f2f3B109Ed85059AEC26a68E694e678C2F917\",\n \"5000\": \"0x1d8538726daE26eE163ebB7606c1f145395F838c\",\n \"534352\": \"0xC5f3e88055304cBdE593a6659797EF92C2613653\"\n }\n}\n", "{\n \"name\": \"ApproveAndSwap\",\n \"abi\": [\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"_wethAddr\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"_router\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"tokenAddr\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"SwapERC20Executed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"SwapETHExecuted\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"EMPTY_STATE\",\n \"outputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }],\n \"name\": \"execute\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"tokenAddr\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"routerCallData\", \"type\": \"bytes\" }\n ],\n \"name\": \"executeSwapERC20\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"routerCallData\", \"type\": \"bytes\" }\n ],\n \"name\": \"executeSwapETH\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"key\", \"type\": \"bytes32\" }\n ],\n \"name\": \"getState\",\n \"outputs\": [\n { \"internalType\": \"bytes\", \"name\": \"state\", \"type\": \"bytes\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getWeth\",\n \"outputs\": [\n { \"internalType\": \"contractIWETH9\", \"name\": \"\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"moduleId\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"payFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"router\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"weth\",\n \"outputs\": [\n { \"internalType\": \"contractIWETH9\", \"name\": \"\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"numDeployments\": 1,\n \"addresses\": {\n \"1\": \"0xe65d63A9B4842c0dc0916aE5368356Ca0212f2CB\",\n \"5\": \"0xe65d63A9B4842c0dc0916aE5368356Ca0212f2CB\",\n \"10\": \"0xe65d63A9B4842c0dc0916aE5368356Ca0212f2CB\",\n \"137\": \"0xe65d63A9B4842c0dc0916aE5368356Ca0212f2CB\",\n \"8453\": \"0xe65d63A9B4842c0dc0916aE5368356Ca0212f2CB\",\n \"36865\": \"0xe65d63A9B4842c0dc0916aE5368356Ca0212f2CB\",\n \"42161\": \"0xe65d63A9B4842c0dc0916aE5368356Ca0212f2CB\",\n \"421614\": \"0xd0d92c17C4123F0e8b571b0Dd0997d4a5E88Bb52\"\n }\n}\n", "{\n \"abi\": [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"entryPoint\",\n \"type\": \"address\",\n \"internalType\": \"contract IEntryPoint\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VERSION\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activateAndCall\",\n \"inputs\": [\n { \"name\": \"target\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"callData\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes\", \"internalType\": \"bytes\" }],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addStake\",\n \"inputs\": [\n {\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deposit\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"entryPoint\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IEntryPoint\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getDeposit\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getLastOpMode\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IPaymaster.PostOpMode\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"postOp\",\n \"inputs\": [\n {\n \"name\": \"mode\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IPaymaster.PostOpMode\"\n },\n { \"name\": \"context\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n {\n \"name\": \"actualGasCost\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOperators\",\n \"inputs\": [\n {\n \"name\": \"operators\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n },\n { \"name\": \"isAllowed\", \"type\": \"bool\", \"internalType\": \"bool\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n { \"name\": \"newOwner\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unlockStake\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"validatePaymasterUserOp\",\n \"inputs\": [\n {\n \"name\": \"userOp\",\n \"type\": \"tuple\",\n \"internalType\": \"struct UserOperation\",\n \"components\": [\n { \"name\": \"sender\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"nonce\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"initCode\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n { \"name\": \"callData\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n {\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n { \"name\": \"signature\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ]\n },\n { \"name\": \"userOpHash\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"maxCost\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ],\n \"outputs\": [\n { \"name\": \"context\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n {\n \"name\": \"validationData\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawStake\",\n \"inputs\": [\n {\n \"name\": \"withdrawAddress\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawTo\",\n \"inputs\": [\n {\n \"name\": \"withdrawAddress\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n },\n { \"name\": \"amount\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n { \"type\": \"error\", \"name\": \"Inactive\", \"inputs\": [] },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOperator\",\n \"inputs\": [\n { \"name\": \"operator\", \"type\": \"address\", \"internalType\": \"address\" }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPaymasterAndDataLength\",\n \"inputs\": [\n { \"name\": \"length\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ]\n }\n ],\n \"bytecode\": {\n \"object\": \"0x60a060405234801561001057600080fd5b50604051610f03380380610f0383398101604081905261002f916100ae565b806100393361005e565b6001600160a01b0316608052506000805460ff60a01b1916600160a01b1790556100de565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100c057600080fd5b81516001600160a01b03811681146100d757600080fd5b9392505050565b608051610dd961012a600039600081816101f60152818161031d015281816103b4015281816104af01528181610543015281816105b30152818161071c01526108bb0152610dd96000f3fe6080604052600436106100f35760003560e01c8063bb9fe6bf1161008a578063d0e30db011610059578063d0e30db014610290578063f2fde38b14610298578063f465c77e146102b8578063ffa1ad74146102e657600080fd5b8063bb9fe6bf14610218578063c23a5cea1461022d578063c399ec881461024d578063c458b07b1461027057600080fd5b80638da5cb5b116100c65780638da5cb5b14610172578063a3111bdb146101a4578063a9a23409146101c4578063b0d691fe146101e457600080fd5b80630396cb60146100f8578063205c28781461010d578063255ed9471461012d578063715018a61461015d575b600080fd5b61010b6101063660046109d5565b6102fb565b005b34801561011957600080fd5b5061010b610128366004610a17565b610386565b34801561013957600080fd5b50600054600160a81b900460ff166040516101549190610a59565b60405180910390f35b34801561016957600080fd5b5061010b6103f8565b34801561017e57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610154565b3480156101b057600080fd5b5061010b6101bf366004610a81565b61040c565b3480156101d057600080fd5b5061010b6101df366004610b55565b61048b565b3480156101f057600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561022457600080fd5b5061010b6104a5565b34801561023957600080fd5b5061010b610248366004610bb5565b61051c565b34801561025957600080fd5b5061026261059b565b604051908152602001610154565b61028361027e366004610bd2565b61062b565b6040516101549190610c6d565b61010b610707565b3480156102a457600080fd5b5061010b6102b3366004610bb5565b610769565b3480156102c457600080fd5b506102d86102d3366004610c80565b6107e2565b604051610154929190610cd4565b3480156102f257600080fd5b50610262600181565b610303610806565b604051621cb65b60e51b815263ffffffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630396cb609034906024016000604051808303818588803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b505050505050565b61038e610806565b60405163040b850f60e31b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561036a57600080fd5b610400610806565b61040a6000610860565b565b610414610806565b8160005b8181101561048457826001600087878581811061043757610437610cf6565b905060200201602081019061044c9190610bb5565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561047d81610d0c565b9050610418565b5050505050565b6104936108b0565b61049f84848484610920565b50505050565b6104ad610806565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561050857600080fd5b505af115801561049f573d6000803e3d6000fd5b610524610806565b60405163611d2e7560e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561058757600080fd5b505af1158015610484573d6000803e3d6000fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106269190610d33565b905090565b3360009081526001602052604090205460609060ff1661066557604051633eaa03e360e01b81523360048201526024015b60405180910390fd5b6000805460ff60a01b1916600160a11b17815560405181906001600160a01b0387169034906106979088908890610d4c565b60006040518083038185875af1925050503d80600081146106d4576040519150601f19603f3d011682016040523d82523d6000602084013e6106d9565b606091505b5091509150816106eb57805160208201fd5b6000805460ff60a01b1916600160a01b17905595945050505050565b60405163b760faf960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b760faf99034906024016000604051808303818588803b15801561058757600080fd5b610771610806565b6001600160a01b0381166107d65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065c565b6107df81610860565b50565b606060006107ee6108b0565b6107f985858561098e565b915091505b935093915050565b6000546001600160a01b0316331461040a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461040a5760405162461bcd60e51b815260206004820152601560248201527414d95b99195c881b9bdd08115b9d1c9e541bda5b9d605a1b604482015260640161065c565b6002600054600160a01b900460ff16600281111561094057610940610a43565b1461095e57604051632e8acb0d60e01b815260040160405180910390fd5b6000805485919060ff60a81b1916600160a81b83600281111561098357610983610a43565b021790555050505050565b606060006109a0610120860186610d5c565b90506014146107fe576109b7610120860186610d5c565b604051635ae9bb9760e01b815261065c925060040190815260200190565b6000602082840312156109e757600080fd5b813563ffffffff811681146109fb57600080fd5b9392505050565b6001600160a01b03811681146107df57600080fd5b60008060408385031215610a2a57600080fd5b8235610a3581610a02565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310610a7b57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600060408486031215610a9657600080fd5b833567ffffffffffffffff80821115610aae57600080fd5b818601915086601f830112610ac257600080fd5b813581811115610ad157600080fd5b8760208260051b8501011115610ae657600080fd5b602092830195509350508401358015158114610b0157600080fd5b809150509250925092565b60008083601f840112610b1e57600080fd5b50813567ffffffffffffffff811115610b3657600080fd5b602083019150836020828501011115610b4e57600080fd5b9250929050565b60008060008060608587031215610b6b57600080fd5b843560038110610b7a57600080fd5b9350602085013567ffffffffffffffff811115610b9657600080fd5b610ba287828801610b0c565b9598909750949560400135949350505050565b600060208284031215610bc757600080fd5b81356109fb81610a02565b600080600060408486031215610be757600080fd5b8335610bf281610a02565b9250602084013567ffffffffffffffff811115610c0e57600080fd5b610c1a86828701610b0c565b9497909650939450505050565b6000815180845260005b81811015610c4d57602081850181015186830182015201610c31565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006109fb6020830184610c27565b600080600060608486031215610c9557600080fd5b833567ffffffffffffffff811115610cac57600080fd5b84016101608187031215610cbf57600080fd5b95602085013595506040909401359392505050565b604081526000610ce76040830185610c27565b90508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b600060018201610d2c57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610d4557600080fd5b5051919050565b8183823760009101908152919050565b6000808335601e19843603018112610d7357600080fd5b83018035915067ffffffffffffffff821115610d8e57600080fd5b602001915036819003821315610b4e57600080fdfea26469706673582212206ca98fa625bb450eac6fbf76f3fdd1ad097fee4001bd72ad8d66bb88a9b49f6d64736f6c63430008140033\",\n \"sourceMap\": \"678:2943:74:-:0;;;1428:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1478:10;936:32:32;719:10:51;936:18:32;:32::i;:::-;-1:-1:-1;;;;;564:24:1;;;-1:-1:-1;1500:14:74::1;:37:::0;;-1:-1:-1;;;;1500:37:74::1;-1:-1:-1::0;;;1500:37:74::1;::::0;;678:2943;;2426:187:32;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:32;;;-1:-1:-1;;;;;;2534:17:32;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;14:309:88:-;103:6;156:2;144:9;135:7;131:23;127:32;124:52;;;172:1;169;162:12;124:52;198:16;;-1:-1:-1;;;;;243:31:88;;233:42;;223:70;;289:1;286;279:12;223:70;312:5;14:309;-1:-1:-1;;;14:309:88:o;328:127::-;678:2943:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\",\n \"linkReferences\": {}\n },\n \"deployedBytecode\": {\n \"object\": \"0x6080604052600436106100f35760003560e01c8063bb9fe6bf1161008a578063d0e30db011610059578063d0e30db014610290578063f2fde38b14610298578063f465c77e146102b8578063ffa1ad74146102e657600080fd5b8063bb9fe6bf14610218578063c23a5cea1461022d578063c399ec881461024d578063c458b07b1461027057600080fd5b80638da5cb5b116100c65780638da5cb5b14610172578063a3111bdb146101a4578063a9a23409146101c4578063b0d691fe146101e457600080fd5b80630396cb60146100f8578063205c28781461010d578063255ed9471461012d578063715018a61461015d575b600080fd5b61010b6101063660046109d5565b6102fb565b005b34801561011957600080fd5b5061010b610128366004610a17565b610386565b34801561013957600080fd5b50600054600160a81b900460ff166040516101549190610a59565b60405180910390f35b34801561016957600080fd5b5061010b6103f8565b34801561017e57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610154565b3480156101b057600080fd5b5061010b6101bf366004610a81565b61040c565b3480156101d057600080fd5b5061010b6101df366004610b55565b61048b565b3480156101f057600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561022457600080fd5b5061010b6104a5565b34801561023957600080fd5b5061010b610248366004610bb5565b61051c565b34801561025957600080fd5b5061026261059b565b604051908152602001610154565b61028361027e366004610bd2565b61062b565b6040516101549190610c6d565b61010b610707565b3480156102a457600080fd5b5061010b6102b3366004610bb5565b610769565b3480156102c457600080fd5b506102d86102d3366004610c80565b6107e2565b604051610154929190610cd4565b3480156102f257600080fd5b50610262600181565b610303610806565b604051621cb65b60e51b815263ffffffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630396cb609034906024016000604051808303818588803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b505050505050565b61038e610806565b60405163040b850f60e31b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561036a57600080fd5b610400610806565b61040a6000610860565b565b610414610806565b8160005b8181101561048457826001600087878581811061043757610437610cf6565b905060200201602081019061044c9190610bb5565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561047d81610d0c565b9050610418565b5050505050565b6104936108b0565b61049f84848484610920565b50505050565b6104ad610806565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561050857600080fd5b505af115801561049f573d6000803e3d6000fd5b610524610806565b60405163611d2e7560e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561058757600080fd5b505af1158015610484573d6000803e3d6000fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106269190610d33565b905090565b3360009081526001602052604090205460609060ff1661066557604051633eaa03e360e01b81523360048201526024015b60405180910390fd5b6000805460ff60a01b1916600160a11b17815560405181906001600160a01b0387169034906106979088908890610d4c565b60006040518083038185875af1925050503d80600081146106d4576040519150601f19603f3d011682016040523d82523d6000602084013e6106d9565b606091505b5091509150816106eb57805160208201fd5b6000805460ff60a01b1916600160a01b17905595945050505050565b60405163b760faf960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b760faf99034906024016000604051808303818588803b15801561058757600080fd5b610771610806565b6001600160a01b0381166107d65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065c565b6107df81610860565b50565b606060006107ee6108b0565b6107f985858561098e565b915091505b935093915050565b6000546001600160a01b0316331461040a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461040a5760405162461bcd60e51b815260206004820152601560248201527414d95b99195c881b9bdd08115b9d1c9e541bda5b9d605a1b604482015260640161065c565b6002600054600160a01b900460ff16600281111561094057610940610a43565b1461095e57604051632e8acb0d60e01b815260040160405180910390fd5b6000805485919060ff60a81b1916600160a81b83600281111561098357610983610a43565b021790555050505050565b606060006109a0610120860186610d5c565b90506014146107fe576109b7610120860186610d5c565b604051635ae9bb9760e01b815261065c925060040190815260200190565b6000602082840312156109e757600080fd5b813563ffffffff811681146109fb57600080fd5b9392505050565b6001600160a01b03811681146107df57600080fd5b60008060408385031215610a2a57600080fd5b8235610a3581610a02565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310610a7b57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600060408486031215610a9657600080fd5b833567ffffffffffffffff80821115610aae57600080fd5b818601915086601f830112610ac257600080fd5b813581811115610ad157600080fd5b8760208260051b8501011115610ae657600080fd5b602092830195509350508401358015158114610b0157600080fd5b809150509250925092565b60008083601f840112610b1e57600080fd5b50813567ffffffffffffffff811115610b3657600080fd5b602083019150836020828501011115610b4e57600080fd5b9250929050565b60008060008060608587031215610b6b57600080fd5b843560038110610b7a57600080fd5b9350602085013567ffffffffffffffff811115610b9657600080fd5b610ba287828801610b0c565b9598909750949560400135949350505050565b600060208284031215610bc757600080fd5b81356109fb81610a02565b600080600060408486031215610be757600080fd5b8335610bf281610a02565b9250602084013567ffffffffffffffff811115610c0e57600080fd5b610c1a86828701610b0c565b9497909650939450505050565b6000815180845260005b81811015610c4d57602081850181015186830182015201610c31565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006109fb6020830184610c27565b600080600060608486031215610c9557600080fd5b833567ffffffffffffffff811115610cac57600080fd5b84016101608187031215610cbf57600080fd5b95602085013595506040909401359392505050565b604081526000610ce76040830185610c27565b90508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b600060018201610d2c57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610d4557600080fd5b5051919050565b8183823760009101908152919050565b6000808335601e19843603018112610d7357600080fd5b83018035915067ffffffffffffffff821115610d8e57600080fd5b602001915036819003821315610b4e57600080fdfea26469706673582212206ca98fa625bb450eac6fbf76f3fdd1ad097fee4001bd72ad8d66bb88a9b49f6d64736f6c63430008140033\",\n \"sourceMap\": \"678:2943:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3094:141:1;;;;;;:::i;:::-;;:::i;:::-;;2721:149;;;;;;;;;;-1:-1:-1;2721:149:1;;;;;:::i;:::-;;:::i;2242:98:74:-;;;;;;;;;;-1:-1:-1;2290:10:74;2319:14;-1:-1:-1;;;2319:14:74;;;;2242:98;;;;;;:::i;:::-;;;;;;;;1824:101:32;;;;;;;;;;;;;:::i;1201:85::-;;;;;;;;;;-1:-1:-1;1247:7:32;1273:6;-1:-1:-1;;;;;1273:6:32;1201:85;;;-1:-1:-1;;;;;1418:32:88;;;1400:51;;1388:2;1373:18;1201:85:32;1254:203:88;1550:253:74;;;;;;;;;;-1:-1:-1;1550:253:74;;;;;:::i;:::-;;:::i;1143:186:1:-;;;;;;;;;;-1:-1:-1;1143:186:1;;;;;:::i;:::-;;:::i;471:39::-;;;;;;;;;;;;;;;3588:83;;;;;;;;;;;;;:::i;3890:133::-;;;;;;;;;;-1:-1:-1;3890:133:1;;;;;:::i;:::-;;:::i;3318:111::-;;;;;;;;;;;;;:::i;:::-;;;3882:25:88;;;3870:2;3855:18;3318:111:1;3736:177:88;1809:427:74;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2474:105:1:-;;;:::i;2074:198:32:-;;;;;;;;;;-1:-1:-1;2074:198:32;;;;;:::i;:::-;;:::i;632:290:1:-;;;;;;;;;;-1:-1:-1;632:290:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;805:35:74:-;;;;;;;;;;;;839:1;805:35;;3094:141:1;1094:13:32;:11;:13::i;:::-;3173:55:1::1;::::0;-1:-1:-1;;;3173:55:1;;6385:10:88;6373:23;;3173:55:1::1;::::0;::::1;6355:42:88::0;3173:10:1::1;-1:-1:-1::0;;;;;3173:19:1::1;::::0;::::1;::::0;3201:9:::1;::::0;6328:18:88;;3173:55:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;3094:141:::0;:::o;2721:149::-;1094:13:32;:11;:13::i;:::-;2817:46:1::1;::::0;-1:-1:-1;;;2817:46:1;;-1:-1:-1;;;;;6616:32:88;;;2817:46:1::1;::::0;::::1;6598:51:88::0;6665:18;;;6658:34;;;2817:10:1::1;:21;::::0;::::1;::::0;6571:18:88;;2817:46:1::1;;;;;;;;;;;;;;;;;::::0;::::1;1824:101:32::0;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1550:253:74:-;1094:13:32;:11;:13::i;:::-;1681:9:74;1669::::1;1707:90;1727:1;1723;:5;1707:90;;;1777:9;1749:11;:25;1761:9;;1771:1;1761:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1749:25:74::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;1749:25:74;:37;;-1:-1:-1;;1749:37:74::1;::::0;::::1;;::::0;;;::::1;::::0;;1730:3:::1;::::0;::::1;:::i;:::-;;;1707:90;;;;1659:144;1550:253:::0;;;:::o;1143:186:1:-;1251:24;:22;:24::i;:::-;1285:37;1293:4;1299:7;;1308:13;1285:7;:37::i;:::-;1143:186;;;;:::o;3588:83::-;1094:13:32;:11;:13::i;:::-;3640:10:1::1;-1:-1:-1::0;;;;;3640:22:1::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;3890:133:::0;1094:13:32;:11;:13::i;:::-;3975:41:1::1;::::0;-1:-1:-1;;;3975:41:1;;-1:-1:-1;;;;;1418:32:88;;;3975:41:1::1;::::0;::::1;1400:51:88::0;3975:10:1::1;:24;::::0;::::1;::::0;1373:18:88;;3975:41:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;3318:111:::0;3387:35;;-1:-1:-1;;;3387:35:1;;3416:4;3387:35;;;1400:51:88;3361:7:1;;3387:10;-1:-1:-1;;;;;3387:20:1;;;;1373:18:88;;3387:35:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3380:42;;3318:111;:::o;1809:427:74:-;1104:10;1092:23;;;;:11;:23;;;;;;1932:12;;1092:23;;1087:89;;1138:27;;-1:-1:-1;;;1138:27:74;;1154:10;1138:27;;;1400:51:88;1373:18;;1138:27:74;;;;;;;;1087:89;1185:14;:35;;-1:-1:-1;;;;1185:35:74;-1:-1:-1;;;1185:35:74;;;1998:70:::1;::::0;1185:14;;-1:-1:-1;;;;;1998:20:74;::::1;::::0;2039:9:::1;::::0;1998:70:::1;::::0;2059:8;;;;1998:70:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1956:112;;;;2083:7;2078:125;;2167:10;2161:17;2156:2;2144:10;2140:19;2133:46;2078:125;1241:14:::0;:37;;-1:-1:-1;;;;1241:37:74;-1:-1:-1;;;1241:37:74;;;2219:10;;-1:-1:-1;;;;;1809:427:74:o;2474:105:1:-;2518:54;;-1:-1:-1;;;2518:54:1;;2566:4;2518:54;;;1400:51:88;2518:10:1;-1:-1:-1;;;;;2518:20:1;;;;2547:9;;1373:18:88;;2518:54:1;;;;;;;;;;;;;;;;;;;2074:198:32;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:32;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:32;;7963:2:88;2154:73:32::1;::::0;::::1;7945:21:88::0;8002:2;7982:18;;;7975:30;8041:34;8021:18;;;8014:62;-1:-1:-1;;;8092:18:88;;;8085:36;8138:19;;2154:73:32::1;7761:402:88::0;2154:73:32::1;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;632:290:1:-;764:20;786:22;821:24;:22;:24::i;:::-;862:53;887:6;895:10;907:7;862:24;:53::i;:::-;855:60;;;;632:290;;;;;;;:::o;1359:130:32:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:32;719:10:51;1422:23:32;1414:68;;;;-1:-1:-1;;;1414:68:32;;8370:2:88;1414:68:32;;;8352:21:88;;;8389:18;;;8382:30;8448:34;8428:18;;;8421:62;8500:18;;1414:68:32;8168:356:88;2426:187:32;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:32;;;-1:-1:-1;;;;;;2534:17:32;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;4087:135:1:-;4156:10;-1:-1:-1;;;;;4178:10:1;4156:33;;4148:67;;;;-1:-1:-1;;;4148:67:1;;8731:2:88;4148:67:1;;;8713:21:88;8770:2;8750:18;;;8743:30;-1:-1:-1;;;8789:18:88;;;8782:51;8850:18;;4148:67:1;8529:345:88;3431:188:74;1343:18;1325:14;;-1:-1:-1;;;1325:14:74;;;;:36;;;;;;;;:::i;:::-;;1321:84;;1384:10;;-1:-1:-1;;;1384:10:74;;;;;;;;;;;1321:84;3591:14:::1;:21:::0;;3608:4;;3591:14;-1:-1:-1;;;;3591:21:74::1;-1:-1:-1::0;;;3608:4:74;3591:21:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;3431:188:::0;;;;:::o;2641:435::-;2845:20;2867:22;2909:23;;;;:6;:23;:::i;:::-;:30;;2943:2;2909:36;2905:165;;3015:23;;;;:6;:23;:::i;:::-;2968:91;;-1:-1:-1;;;2968:91:74;;;;-1:-1:-1;2968:91:74;;3882:25:88;;;3870:2;3855:18;;3736:177;14:276;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:10;223:5;219:22;212:5;209:33;199:61;;256:1;253;246:12;199:61;279:5;14:276;-1:-1:-1;;;14:276:88:o;295:139::-;-1:-1:-1;;;;;378:31:88;;368:42;;358:70;;424:1;421;414:12;439:331;515:6;523;576:2;564:9;555:7;551:23;547:32;544:52;;;592:1;589;582:12;544:52;631:9;618:23;650:39;683:5;650:39;:::i;:::-;708:5;760:2;745:18;;;;732:32;;-1:-1:-1;;;439:331:88:o;775:127::-;836:10;831:3;827:20;824:1;817:31;867:4;864:1;857:15;891:4;888:1;881:15;907:342;1053:2;1038:18;;1086:1;1075:13;;1065:144;;1131:10;1126:3;1122:20;1119:1;1112:31;1166:4;1163:1;1156:15;1194:4;1191:1;1184:15;1065:144;1218:25;;;907:342;:::o;1462:782::-;1554:6;1562;1570;1623:2;1611:9;1602:7;1598:23;1594:32;1591:52;;;1639:1;1636;1629:12;1591:52;1679:9;1666:23;1708:18;1749:2;1741:6;1738:14;1735:34;;;1765:1;1762;1755:12;1735:34;1803:6;1792:9;1788:22;1778:32;;1848:7;1841:4;1837:2;1833:13;1829:27;1819:55;;1870:1;1867;1860:12;1819:55;1910:2;1897:16;1936:2;1928:6;1925:14;1922:34;;;1952:1;1949;1942:12;1922:34;2007:7;2000:4;1990:6;1987:1;1983:14;1979:2;1975:23;1971:34;1968:47;1965:67;;;2028:1;2025;2018:12;1965:67;2059:4;2051:13;;;;-1:-1:-1;2083:6:88;-1:-1:-1;;2124:20:88;;2111:34;2181:13;;2174:21;2164:32;;2154:60;;2210:1;2207;2200:12;2154:60;2233:5;2223:15;;;1462:782;;;;;:::o;2249:347::-;2300:8;2310:6;2364:3;2357:4;2349:6;2345:17;2341:27;2331:55;;2382:1;2379;2372:12;2331:55;-1:-1:-1;2405:20:88;;2448:18;2437:30;;2434:50;;;2480:1;2477;2470:12;2434:50;2517:4;2509:6;2505:17;2493:29;;2569:3;2562:4;2553:6;2545;2541:19;2537:30;2534:39;2531:59;;;2586:1;2583;2576:12;2531:59;2249:347;;;;;:::o;2601:635::-;2703:6;2711;2719;2727;2780:2;2768:9;2759:7;2755:23;2751:32;2748:52;;;2796:1;2793;2786:12;2748:52;2835:9;2822:23;2874:1;2867:5;2864:12;2854:40;;2890:1;2887;2880:12;2854:40;2913:5;-1:-1:-1;2969:2:88;2954:18;;2941:32;2996:18;2985:30;;2982:50;;;3028:1;3025;3018:12;2982:50;3067:58;3117:7;3108:6;3097:9;3093:22;3067:58;:::i;:::-;2601:635;;3144:8;;-1:-1:-1;3041:84:88;;3226:2;3211:18;3198:32;;2601:635;-1:-1:-1;;;;2601:635:88:o;3468:263::-;3535:6;3588:2;3576:9;3567:7;3563:23;3559:32;3556:52;;;3604:1;3601;3594:12;3556:52;3643:9;3630:23;3662:39;3695:5;3662:39;:::i;3918:552::-;3997:6;4005;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4140:39;4173:5;4140:39;:::i;:::-;4198:5;-1:-1:-1;4254:2:88;4239:18;;4226:32;4281:18;4270:30;;4267:50;;;4313:1;4310;4303:12;4267:50;4352:58;4402:7;4393:6;4382:9;4378:22;4352:58;:::i;:::-;3918:552;;4429:8;;-1:-1:-1;4326:84:88;;-1:-1:-1;;;;3918:552:88:o;4475:422::-;4516:3;4554:5;4548:12;4581:6;4576:3;4569:19;4606:1;4616:162;4630:6;4627:1;4624:13;4616:162;;;4692:4;4748:13;;;4744:22;;4738:29;4720:11;;;4716:20;;4709:59;4645:12;4616:162;;;4620:3;4823:1;4816:4;4807:6;4802:3;4798:16;4794:27;4787:38;4886:4;4879:2;4875:7;4870:2;4862:6;4858:15;4854:29;4849:3;4845:39;4841:50;4834:57;;;4475:422;;;;:::o;4902:217::-;5049:2;5038:9;5031:21;5012:4;5069:44;5109:2;5098:9;5094:18;5086:6;5069:44;:::i;5384:529::-;5494:6;5502;5510;5563:2;5551:9;5542:7;5538:23;5534:32;5531:52;;;5579:1;5576;5569:12;5531:52;5619:9;5606:23;5652:18;5644:6;5641:30;5638:50;;;5684:1;5681;5674:12;5638:50;5707:22;;5763:3;5745:16;;;5741:26;5738:46;;;5780:1;5777;5770:12;5738:46;5803:2;5852;5837:18;;5824:32;;-1:-1:-1;5903:2:88;5888:18;;;5875:32;;5384:529;-1:-1:-1;;;5384:529:88:o;5918:288::-;6093:2;6082:9;6075:21;6056:4;6113:44;6153:2;6142:9;6138:18;6130:6;6113:44;:::i;:::-;6105:52;;6193:6;6188:2;6177:9;6173:18;6166:34;5918:288;;;;;:::o;6703:127::-;6764:10;6759:3;6755:20;6752:1;6745:31;6795:4;6792:1;6785:15;6819:4;6816:1;6809:15;6835:232;6874:3;6895:17;;;6892:140;;6954:10;6949:3;6945:20;6942:1;6935:31;6989:4;6986:1;6979:15;7017:4;7014:1;7007:15;6892:140;-1:-1:-1;7059:1:88;7048:13;;6835:232::o;7296:184::-;7366:6;7419:2;7407:9;7398:7;7394:23;7390:32;7387:52;;;7435:1;7432;7425:12;7387:52;-1:-1:-1;7458:16:88;;7296:184;-1:-1:-1;7296:184:88:o;7485:271::-;7668:6;7660;7655:3;7642:33;7624:3;7694:16;;7719:13;;;7694:16;7485:271;-1:-1:-1;7485:271:88:o;8879:521::-;8956:4;8962:6;9022:11;9009:25;9116:2;9112:7;9101:8;9085:14;9081:29;9077:43;9057:18;9053:68;9043:96;;9135:1;9132;9125:12;9043:96;9162:33;;9214:20;;;-1:-1:-1;9257:18:88;9246:30;;9243:50;;;9289:1;9286;9279:12;9243:50;9322:4;9310:17;;-1:-1:-1;9353:14:88;9349:27;;;9339:38;;9336:58;;;9390:1;9387;9380:12\",\n \"linkReferences\": {},\n \"immutableReferences\": {\n \"155\": [\n { \"start\": 502, \"length\": 32 },\n { \"start\": 797, \"length\": 32 },\n { \"start\": 948, \"length\": 32 },\n { \"start\": 1199, \"length\": 32 },\n { \"start\": 1347, \"length\": 32 },\n { \"start\": 1459, \"length\": 32 },\n { \"start\": 1820, \"length\": 32 },\n { \"start\": 2235, \"length\": 32 }\n ]\n }\n },\n \"methodIdentifiers\": {\n \"VERSION()\": \"ffa1ad74\",\n \"activateAndCall(address,bytes)\": \"c458b07b\",\n \"addStake(uint32)\": \"0396cb60\",\n \"deposit()\": \"d0e30db0\",\n \"entryPoint()\": \"b0d691fe\",\n \"getDeposit()\": \"c399ec88\",\n \"getLastOpMode()\": \"255ed947\",\n \"owner()\": \"8da5cb5b\",\n \"postOp(uint8,bytes,uint256)\": \"a9a23409\",\n \"renounceOwnership()\": \"715018a6\",\n \"setOperators(address[],bool)\": \"a3111bdb\",\n \"transferOwnership(address)\": \"f2fde38b\",\n \"unlockStake()\": \"bb9fe6bf\",\n \"validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)\": \"f465c77e\",\n \"withdrawStake(address)\": \"c23a5cea\",\n \"withdrawTo(address,uint256)\": \"205c2878\"\n },\n \"rawMetadata\": \"{\\\"compiler\\\":{\\\"version\\\":\\\"0.8.20+commit.a1b79de6\\\"},\\\"language\\\":\\\"Solidity\\\",\\\"output\\\":{\\\"abi\\\":[{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract IEntryPoint\\\",\\\"name\\\":\\\"entryPoint\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"constructor\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"Inactive\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"operator\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"InvalidOperator\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"length\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"InvalidPaymasterAndDataLength\\\",\\\"type\\\":\\\"error\\\"},{\\\"anonymous\\\":false,\\\"inputs\\\":[{\\\"indexed\\\":true,\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"previousOwner\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":true,\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"newOwner\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"OwnershipTransferred\\\",\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"VERSION\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"target\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"callData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"activateAndCall\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"stateMutability\\\":\\\"payable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint32\\\",\\\"name\\\":\\\"unstakeDelaySec\\\",\\\"type\\\":\\\"uint32\\\"}],\\\"name\\\":\\\"addStake\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"payable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"deposit\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"payable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"entryPoint\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract IEntryPoint\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"getDeposit\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"getLastOpMode\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"enum IPaymaster.PostOpMode\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint8\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"owner\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"enum IPaymaster.PostOpMode\\\",\\\"name\\\":\\\"mode\\\",\\\"type\\\":\\\"uint8\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"actualGasCost\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"postOp\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"renounceOwnership\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address[]\\\",\\\"name\\\":\\\"operators\\\",\\\"type\\\":\\\"address[]\\\"},{\\\"internalType\\\":\\\"bool\\\",\\\"name\\\":\\\"isAllowed\\\",\\\"type\\\":\\\"bool\\\"}],\\\"name\\\":\\\"setOperators\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"newOwner\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"transferOwnership\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"unlockStake\\\",\\\"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\\\":\\\"uint256\\\",\\\"name\\\":\\\"callGasLimit\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"verificationGasLimit\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"preVerificationGas\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"maxFeePerGas\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"maxPriorityFeePerGas\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"paymasterAndData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"signature\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"internalType\\\":\\\"struct UserOperation\\\",\\\"name\\\":\\\"userOp\\\",\\\"type\\\":\\\"tuple\\\"},{\\\"internalType\\\":\\\"bytes32\\\",\\\"name\\\":\\\"userOpHash\\\",\\\"type\\\":\\\"bytes32\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"maxCost\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"validatePaymasterUserOp\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"validationData\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"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\\\":\\\"amount\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"withdrawTo\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"}],\\\"devdoc\\\":{\\\"author\\\":\\\"Fun.xyz\\\",\\\"kind\\\":\\\"dev\\\",\\\"methods\\\":{\\\"addStake(uint32)\\\":{\\\"params\\\":{\\\"unstakeDelaySec\\\":\\\"- the unstake delay for this paymaster. Can only be increased.\\\"}},\\\"owner()\\\":{\\\"details\\\":\\\"Returns the address of the current owner.\\\"},\\\"postOp(uint8,bytes,uint256)\\\":{\\\"params\\\":{\\\"actualGasCost\\\":\\\"- actual gas used so far (without this postOp call).\\\",\\\"context\\\":\\\"- the context value returned by validatePaymasterUserOp\\\",\\\"mode\\\":\\\"enum with the following options: opSucceeded - user operation succeeded. opReverted - user op reverted. still has to pay for gas. postOpReverted - user op succeeded, but caused postOp (in mode=opSucceeded) to revert. Now this is the 2nd call, after user's op was deliberately reverted.\\\"}},\\\"renounceOwnership()\\\":{\\\"details\\\":\\\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\\\"},\\\"transferOwnership(address)\\\":{\\\"details\\\":\\\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\\\"},\\\"validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)\\\":{\\\"params\\\":{\\\"maxCost\\\":\\\"the maximum cost of this transaction (based on maximum gas and gas price from userOp)\\\",\\\"userOp\\\":\\\"the user operation\\\",\\\"userOpHash\\\":\\\"hash of the user's request data.\\\"},\\\"returns\\\":{\\\"context\\\":\\\"value to send to a postOp zero length to signify postOp is not required.\\\",\\\"validationData\\\":\\\"signature and time-range of this operation, encoded the same as the return value of validateUserOperation <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \\\\\\\"authorizer\\\\\\\" contract. <6-byte> validUntil - last timestamp this operation is valid. 0 for \\\\\\\"indefinite\\\\\\\" <6-byte> validAfter - first timestamp this operation is valid Note that the validation code cannot use block.timestamp (or block.number) directly.\\\"}},\\\"withdrawStake(address)\\\":{\\\"params\\\":{\\\"withdrawAddress\\\":\\\"the address to send withdrawn value.\\\"}},\\\"withdrawTo(address,uint256)\\\":{\\\"params\\\":{\\\"amount\\\":\\\"to withdraw\\\",\\\"withdrawAddress\\\":\\\"target to send to\\\"}}},\\\"title\\\":\\\"CheckoutPaymaster\\\",\\\"version\\\":1},\\\"userdoc\\\":{\\\"kind\\\":\\\"user\\\",\\\"methods\\\":{\\\"addStake(uint32)\\\":{\\\"notice\\\":\\\"add stake for this paymaster. This method can also carry eth value to add to the current stake.\\\"},\\\"deposit()\\\":{\\\"notice\\\":\\\"add a deposit for this paymaster, used for paying for transaction fees\\\"},\\\"getDeposit()\\\":{\\\"notice\\\":\\\"return current paymaster's deposit on the entryPoint.\\\"},\\\"postOp(uint8,bytes,uint256)\\\":{\\\"notice\\\":\\\"post-operation handler. Must verify sender is the entryPoint\\\"},\\\"unlockStake()\\\":{\\\"notice\\\":\\\"unlock the stake, in order to withdraw it. The paymaster can't serve requests once unlocked, until it calls addStake again\\\"},\\\"validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)\\\":{\\\"notice\\\":\\\"payment validation: check if paymaster agrees to pay. Must verify sender is the entryPoint. Revert to reject this request. Note that bundlers will reject this method if it changes the state, unless the paymaster is trusted (whitelisted) The paymaster pre-pays using its deposit, and receive back a refund after the postOp method returns.\\\"},\\\"withdrawStake(address)\\\":{\\\"notice\\\":\\\"withdraw the entire paymaster's stake. stake must be unlocked first (and then wait for the unstakeDelay to be over)\\\"},\\\"withdrawTo(address,uint256)\\\":{\\\"notice\\\":\\\"withdraw value from the deposit\\\"}},\\\"version\\\":1}},\\\"settings\\\":{\\\"compilationTarget\\\":{\\\"src/paymaster/CheckoutPaymaster.sol\\\":\\\"CheckoutPaymaster\\\"},\\\"evmVersion\\\":\\\"paris\\\",\\\"libraries\\\":{},\\\"metadata\\\":{\\\"bytecodeHash\\\":\\\"ipfs\\\"},\\\"optimizer\\\":{\\\"enabled\\\":true,\\\"runs\\\":200},\\\"remappings\\\":[\\\":@account-abstraction/contracts/=lib/account-abstraction/contracts/\\\",\\\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\\\",\\\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\\\",\\\":account-abstraction/=lib/account-abstraction/contracts/\\\",\\\":ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\\\",\\\":forge-std/=lib/forge-std/src/\\\",\\\":openzeppelin-contracts/=lib/openzeppelin-contracts/\\\",\\\":openzeppelin/=lib/openzeppelin-contracts/contracts/\\\"]},\\\"sources\\\":{\\\"lib/account-abstraction/contracts/core/BasePaymaster.sol\\\":{\\\"keccak256\\\":\\\"0x27f658d545b5f26c2e09a7ac4fba72f9975433839d10225a520e557540b84443\\\",\\\"license\\\":\\\"GPL-3.0\\\",\\\"urls\\\":[\\\"bzz-raw://426f0c6565ae612d34ae184fb1582e6fc360abf79450975c1c2dd439184094a0\\\",\\\"dweb:/ipfs/QmZMeMosC1P6Z5BQyT6iGFQrY6ui5ART65ycVWmXFnDpoq\\\"]},\\\"lib/account-abstraction/contracts/core/Helpers.sol\\\":{\\\"keccak256\\\":\\\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\\\",\\\"license\\\":\\\"GPL-3.0\\\",\\\"urls\\\":[\\\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\\\",\\\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\\\"]},\\\"lib/account-abstraction/contracts/interfaces/IAggregator.sol\\\":{\\\"keccak256\\\":\\\"0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a\\\",\\\"license\\\":\\\"GPL-3.0\\\",\\\"urls\\\":[\\\"bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b\\\",\\\"dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP\\\"]},\\\"lib/account-abstraction/contracts/interfaces/IEntryPoint.sol\\\":{\\\"keccak256\\\":\\\"0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8\\\",\\\"license\\\":\\\"GPL-3.0\\\",\\\"urls\\\":[\\\"bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf\\\",\\\"dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd\\\"]},\\\"lib/account-abstraction/contracts/interfaces/INonceManager.sol\\\":{\\\"keccak256\\\":\\\"0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12\\\",\\\"license\\\":\\\"GPL-3.0\\\",\\\"urls\\\":[\\\"bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2\\\",\\\"dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b\\\"]},\\\"lib/account-abstraction/contracts/interfaces/IPaymaster.sol\\\":{\\\"keccak256\\\":\\\"0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456\\\",\\\"license\\\":\\\"GPL-3.0\\\",\\\"urls\\\":[\\\"bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8\\\",\\\"dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia\\\"]},\\\"lib/account-abstraction/contracts/interfaces/IStakeManager.sol\\\":{\\\"keccak256\\\":\\\"0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f\\\",\\\"license\\\":\\\"GPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3\\\",\\\"dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ\\\"]},\\\"lib/account-abstraction/contracts/interfaces/UserOperation.sol\\\":{\\\"keccak256\\\":\\\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\\\",\\\"license\\\":\\\"GPL-3.0\\\",\\\"urls\\\":[\\\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\\\",\\\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\\\"]},\\\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\\\":{\\\"keccak256\\\":\\\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\\\",\\\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Context.sol\\\":{\\\"keccak256\\\":\\\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\\\",\\\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\\\"]},\\\"src/interfaces/InspectablePaymasterInterface.sol\\\":{\\\"keccak256\\\":\\\"0xfa01cf6d6c5c7585be4ffba481461417568e83e4326e4d4f3f978f448c494c05\\\",\\\"license\\\":\\\"UNLICENSED\\\",\\\"urls\\\":[\\\"bzz-raw://359879084737d058f0098e12d25170e8181bf597231cb440302a945d6483e638\\\",\\\"dweb:/ipfs/QmWjJtxkBGXk8MmrVQCqp2gjyyibTmMc6b6GwQLcrcGyNp\\\"]},\\\"src/paymaster/CheckoutPaymaster.sol\\\":{\\\"keccak256\\\":\\\"0x750ce14a013dca17e026f47f3e1f141c7941983a9e38d66d79ad32f7dd4f64d3\\\",\\\"license\\\":\\\"UNLICENSED\\\",\\\"urls\\\":[\\\"bzz-raw://e0a9a642e69bbba805719b3c12144f2e32d3e2b70d24392ae7b09dd72a9510c6\\\",\\\"dweb:/ipfs/Qma8sDR2eC1pjAjkizjNhBnBbMvZV1x6pv82Z4xjNHvnaW\\\"]},\\\"src/paymaster/CheckoutPaymasterEventsAndErrors.sol\\\":{\\\"keccak256\\\":\\\"0xff791f10ae484b55407bdfa6f82516187388264e8e84bccd7571486c6ee08c37\\\",\\\"license\\\":\\\"UNLICENSED\\\",\\\"urls\\\":[\\\"bzz-raw://0df9a5fbbe1aa679422daa50a9f25a1fdd84df2a939903d9dd3f90d3a88f99e2\\\",\\\"dweb:/ipfs/QmPFaWWrb49R8WZizNKC7LN9YhWuhF7wey6cZKQg2WkMnr\\\"]}},\\\"version\\\":1}\",\n \"metadata\": {\n \"compiler\": { \"version\": \"0.8.20+commit.a1b79de6\" },\n \"language\": \"Solidity\",\n \"output\": {\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IEntryPoint\",\n \"name\": \"entryPoint\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n { \"inputs\": [], \"type\": \"error\", \"name\": \"Inactive\" },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"operator\", \"type\": \"address\" }\n ],\n \"type\": \"error\",\n \"name\": \"InvalidOperator\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"uint256\", \"name\": \"length\", \"type\": \"uint256\" }\n ],\n \"type\": \"error\",\n \"name\": \"InvalidPaymasterAndDataLength\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true\n }\n ],\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"anonymous\": false\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"VERSION\",\n \"outputs\": [\n { \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }\n ]\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"target\", \"type\": \"address\" },\n { \"internalType\": \"bytes\", \"name\": \"callData\", \"type\": \"bytes\" }\n ],\n \"stateMutability\": \"payable\",\n \"type\": \"function\",\n \"name\": \"activateAndCall\",\n \"outputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"payable\",\n \"type\": \"function\",\n \"name\": \"addStake\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\",\n \"name\": \"deposit\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"entryPoint\",\n \"outputs\": [\n {\n \"internalType\": \"contract IEntryPoint\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"getDeposit\",\n \"outputs\": [\n { \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"getLastOpMode\",\n \"outputs\": [\n {\n \"internalType\": \"enum IPaymaster.PostOpMode\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"owner\",\n \"outputs\": [\n { \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum IPaymaster.PostOpMode\",\n \"name\": \"mode\",\n \"type\": \"uint8\"\n },\n { \"internalType\": \"bytes\", \"name\": \"context\", \"type\": \"bytes\" },\n {\n \"internalType\": \"uint256\",\n \"name\": \"actualGasCost\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"postOp\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"renounceOwnership\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"operators\",\n \"type\": \"address[]\"\n },\n { \"internalType\": \"bool\", \"name\": \"isAllowed\", \"type\": \"bool\" }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"setOperators\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"newOwner\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"transferOwnership\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"unlockStake\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"struct UserOperation\",\n \"name\": \"userOp\",\n \"type\": \"tuple\",\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"nonce\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"initCode\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"callData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ]\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"userOpHash\",\n \"type\": \"bytes32\"\n },\n { \"internalType\": \"uint256\", \"name\": \"maxCost\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"validatePaymasterUserOp\",\n \"outputs\": [\n { \"internalType\": \"bytes\", \"name\": \"context\", \"type\": \"bytes\" },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validationData\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address payable\",\n \"name\": \"withdrawAddress\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"withdrawStake\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address payable\",\n \"name\": \"withdrawAddress\",\n \"type\": \"address\"\n },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"withdrawTo\"\n }\n ],\n \"devdoc\": {\n \"kind\": \"dev\",\n \"methods\": {\n \"addStake(uint32)\": {\n \"params\": {\n \"unstakeDelaySec\": \"- the unstake delay for this paymaster. Can only be increased.\"\n }\n },\n \"owner()\": { \"details\": \"Returns the address of the current owner.\" },\n \"postOp(uint8,bytes,uint256)\": {\n \"params\": {\n \"actualGasCost\": \"- actual gas used so far (without this postOp call).\",\n \"context\": \"- the context value returned by validatePaymasterUserOp\",\n \"mode\": \"enum with the following options: opSucceeded - user operation succeeded. opReverted - user op reverted. still has to pay for gas. postOpReverted - user op succeeded, but caused postOp (in mode=opSucceeded) to revert. Now this is the 2nd call, after user's op was deliberately reverted.\"\n }\n },\n \"renounceOwnership()\": {\n \"details\": \"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"\n },\n \"transferOwnership(address)\": {\n \"details\": \"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"\n },\n \"validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)\": {\n \"params\": {\n \"maxCost\": \"the maximum cost of this transaction (based on maximum gas and gas price from userOp)\",\n \"userOp\": \"the user operation\",\n \"userOpHash\": \"hash of the user's request data.\"\n },\n \"returns\": {\n \"context\": \"value to send to a postOp zero length to signify postOp is not required.\",\n \"validationData\": \"signature and time-range of this operation, encoded the same as the return value of validateUserOperation <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \\\"authorizer\\\" contract. <6-byte> validUntil - last timestamp this operation is valid. 0 for \\\"indefinite\\\" <6-byte> validAfter - first timestamp this operation is valid Note that the validation code cannot use block.timestamp (or block.number) directly.\"\n }\n },\n \"withdrawStake(address)\": {\n \"params\": {\n \"withdrawAddress\": \"the address to send withdrawn value.\"\n }\n },\n \"withdrawTo(address,uint256)\": {\n \"params\": {\n \"amount\": \"to withdraw\",\n \"withdrawAddress\": \"target to send to\"\n }\n }\n },\n \"version\": 1\n },\n \"userdoc\": {\n \"kind\": \"user\",\n \"methods\": {\n \"addStake(uint32)\": {\n \"notice\": \"add stake for this paymaster. This method can also carry eth value to add to the current stake.\"\n },\n \"deposit()\": {\n \"notice\": \"add a deposit for this paymaster, used for paying for transaction fees\"\n },\n \"getDeposit()\": {\n \"notice\": \"return current paymaster's deposit on the entryPoint.\"\n },\n \"postOp(uint8,bytes,uint256)\": {\n \"notice\": \"post-operation handler. Must verify sender is the entryPoint\"\n },\n \"unlockStake()\": {\n \"notice\": \"unlock the stake, in order to withdraw it. The paymaster can't serve requests once unlocked, until it calls addStake again\"\n },\n \"validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)\": {\n \"notice\": \"payment validation: check if paymaster agrees to pay. Must verify sender is the entryPoint. Revert to reject this request. Note that bundlers will reject this method if it changes the state, unless the paymaster is trusted (whitelisted) The paymaster pre-pays using its deposit, and receive back a refund after the postOp method returns.\"\n },\n \"withdrawStake(address)\": {\n \"notice\": \"withdraw the entire paymaster's stake. stake must be unlocked first (and then wait for the unstakeDelay to be over)\"\n },\n \"withdrawTo(address,uint256)\": {\n \"notice\": \"withdraw value from the deposit\"\n }\n },\n \"version\": 1\n }\n },\n \"settings\": {\n \"remappings\": [\n \"@account-abstraction/contracts/=lib/account-abstraction/contracts/\",\n \"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\n \"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\n \"account-abstraction/=lib/account-abstraction/contracts/\",\n \"ds-test/=lib/forge-std/lib/ds-test/src/\",\n \"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\n \"forge-std/=lib/forge-std/src/\",\n \"openzeppelin-contracts/=lib/openzeppelin-contracts/\",\n \"openzeppelin/=lib/openzeppelin-contracts/contracts/\"\n ],\n \"optimizer\": { \"enabled\": true, \"runs\": 200 },\n \"metadata\": { \"bytecodeHash\": \"ipfs\" },\n \"compilationTarget\": {\n \"src/paymaster/CheckoutPaymaster.sol\": \"CheckoutPaymaster\"\n },\n \"libraries\": {}\n },\n \"sources\": {\n \"lib/account-abstraction/contracts/core/BasePaymaster.sol\": {\n \"keccak256\": \"0x27f658d545b5f26c2e09a7ac4fba72f9975433839d10225a520e557540b84443\",\n \"urls\": [\n \"bzz-raw://426f0c6565ae612d34ae184fb1582e6fc360abf79450975c1c2dd439184094a0\",\n \"dweb:/ipfs/QmZMeMosC1P6Z5BQyT6iGFQrY6ui5ART65ycVWmXFnDpoq\"\n ],\n \"license\": \"GPL-3.0\"\n },\n \"lib/account-abstraction/contracts/core/Helpers.sol\": {\n \"keccak256\": \"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\n \"urls\": [\n \"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\n \"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"\n ],\n \"license\": \"GPL-3.0\"\n },\n \"lib/account-abstraction/contracts/interfaces/IAggregator.sol\": {\n \"keccak256\": \"0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a\",\n \"urls\": [\n \"bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b\",\n \"dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP\"\n ],\n \"license\": \"GPL-3.0\"\n },\n \"lib/account-abstraction/contracts/interfaces/IEntryPoint.sol\": {\n \"keccak256\": \"0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8\",\n \"urls\": [\n \"bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf\",\n \"dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd\"\n ],\n \"license\": \"GPL-3.0\"\n },\n \"lib/account-abstraction/contracts/interfaces/INonceManager.sol\": {\n \"keccak256\": \"0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12\",\n \"urls\": [\n \"bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2\",\n \"dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b\"\n ],\n \"license\": \"GPL-3.0\"\n },\n \"lib/account-abstraction/contracts/interfaces/IPaymaster.sol\": {\n \"keccak256\": \"0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456\",\n \"urls\": [\n \"bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8\",\n \"dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia\"\n ],\n \"license\": \"GPL-3.0\"\n },\n \"lib/account-abstraction/contracts/interfaces/IStakeManager.sol\": {\n \"keccak256\": \"0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f\",\n \"urls\": [\n \"bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3\",\n \"dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ\"\n ],\n \"license\": \"GPL-3.0-only\"\n },\n \"lib/account-abstraction/contracts/interfaces/UserOperation.sol\": {\n \"keccak256\": \"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\n \"urls\": [\n \"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\n \"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"\n ],\n \"license\": \"GPL-3.0\"\n },\n \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\": {\n \"keccak256\": \"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\n \"urls\": [\n \"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\n \"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Context.sol\": {\n \"keccak256\": \"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\n \"urls\": [\n \"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\n \"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"\n ],\n \"license\": \"MIT\"\n },\n \"src/interfaces/InspectablePaymasterInterface.sol\": {\n \"keccak256\": \"0xfa01cf6d6c5c7585be4ffba481461417568e83e4326e4d4f3f978f448c494c05\",\n \"urls\": [\n \"bzz-raw://359879084737d058f0098e12d25170e8181bf597231cb440302a945d6483e638\",\n \"dweb:/ipfs/QmWjJtxkBGXk8MmrVQCqp2gjyyibTmMc6b6GwQLcrcGyNp\"\n ],\n \"license\": \"UNLICENSED\"\n },\n \"src/paymaster/CheckoutPaymaster.sol\": {\n \"keccak256\": \"0x750ce14a013dca17e026f47f3e1f141c7941983a9e38d66d79ad32f7dd4f64d3\",\n \"urls\": [\n \"bzz-raw://e0a9a642e69bbba805719b3c12144f2e32d3e2b70d24392ae7b09dd72a9510c6\",\n \"dweb:/ipfs/Qma8sDR2eC1pjAjkizjNhBnBbMvZV1x6pv82Z4xjNHvnaW\"\n ],\n \"license\": \"UNLICENSED\"\n },\n \"src/paymaster/CheckoutPaymasterEventsAndErrors.sol\": {\n \"keccak256\": \"0xff791f10ae484b55407bdfa6f82516187388264e8e84bccd7571486c6ee08c37\",\n \"urls\": [\n \"bzz-raw://0df9a5fbbe1aa679422daa50a9f25a1fdd84df2a939903d9dd3f90d3a88f99e2\",\n \"dweb:/ipfs/QmPFaWWrb49R8WZizNKC7LN9YhWuhF7wey6cZKQg2WkMnr\"\n ],\n \"license\": \"UNLICENSED\"\n }\n },\n \"version\": 1\n },\n \"ast\": {\n \"absolutePath\": \"src/paymaster/CheckoutPaymaster.sol\",\n \"id\": 54009,\n \"exportedSymbols\": {\n \"ActiveState\": [53806],\n \"BasePaymaster\": [361],\n \"CheckoutPaymaster\": [54008],\n \"CheckoutPaymasterEventsAndErrors\": [54021],\n \"IEntryPoint\": [857],\n \"InspectablePaymasterInterface\": [53775],\n \"UserOperation\": [1045]\n },\n \"nodeType\": \"SourceUnit\",\n \"src\": \"39:3583:74\",\n \"nodes\": [\n {\n \"id\": 53792,\n \"nodeType\": \"PragmaDirective\",\n \"src\": \"39:24:74\",\n \"nodes\": [],\n \"literals\": [\"solidity\", \"^\", \"0.8\", \".13\"]\n },\n {\n \"id\": 53794,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"65:90:74\",\n \"nodes\": [],\n \"absolutePath\": \"lib/account-abstraction/contracts/core/BasePaymaster.sol\",\n \"file\": \"@account-abstraction/contracts/core/BasePaymaster.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 54009,\n \"sourceUnit\": 362,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 53793,\n \"name\": \"BasePaymaster\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 361,\n \"src\": \"78:13:74\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 53796,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"156:92:74\",\n \"nodes\": [],\n \"absolutePath\": \"lib/account-abstraction/contracts/interfaces/IEntryPoint.sol\",\n \"file\": \"@account-abstraction/contracts/interfaces/IEntryPoint.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 54009,\n \"sourceUnit\": 858,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 53795,\n \"name\": \"IEntryPoint\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 857,\n \"src\": \"169:11:74\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 53798,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"249:96:74\",\n \"nodes\": [],\n \"absolutePath\": \"lib/account-abstraction/contracts/interfaces/UserOperation.sol\",\n \"file\": \"@account-abstraction/contracts/interfaces/UserOperation.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 54009,\n \"sourceUnit\": 1216,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 53797,\n \"name\": \"UserOperation\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 1045,\n \"src\": \"262:13:74\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 53800,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"347:100:74\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/InspectablePaymasterInterface.sol\",\n \"file\": \"../interfaces/InspectablePaymasterInterface.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 54009,\n \"sourceUnit\": 53776,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 53799,\n \"name\": \"InspectablePaymasterInterface\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53775,\n \"src\": \"360:29:74\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 53802,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"448:94:74\",\n \"nodes\": [],\n \"absolutePath\": \"src/paymaster/CheckoutPaymasterEventsAndErrors.sol\",\n \"file\": \"./CheckoutPaymasterEventsAndErrors.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 54009,\n \"sourceUnit\": 54022,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 53801,\n \"name\": \"CheckoutPaymasterEventsAndErrors\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 54021,\n \"src\": \"461:32:74\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 53806,\n \"nodeType\": \"EnumDefinition\",\n \"src\": \"544:77:74\",\n \"nodes\": [],\n \"canonicalName\": \"ActiveState\",\n \"members\": [\n {\n \"id\": 53803,\n \"name\": \"UNSPECIFIED\",\n \"nameLocation\": \"567:11:74\",\n \"nodeType\": \"EnumValue\",\n \"src\": \"567:11:74\"\n },\n {\n \"id\": 53804,\n \"name\": \"INACTIVE\",\n \"nameLocation\": \"589:8:74\",\n \"nodeType\": \"EnumValue\",\n \"src\": \"589:8:74\"\n },\n {\n \"id\": 53805,\n \"name\": \"ACTIVE\",\n \"nameLocation\": \"608:6:74\",\n \"nodeType\": \"EnumValue\",\n \"src\": \"608:6:74\"\n }\n ],\n \"name\": \"ActiveState\",\n \"nameLocation\": \"549:11:74\"\n },\n {\n \"id\": 54008,\n \"nodeType\": \"ContractDefinition\",\n \"src\": \"678:2943:74\",\n \"nodes\": [\n {\n \"id\": 53816,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"805:35:74\",\n \"nodes\": [],\n \"constant\": true,\n \"functionSelector\": \"ffa1ad74\",\n \"mutability\": \"constant\",\n \"name\": \"VERSION\",\n \"nameLocation\": \"829:7:74\",\n \"scope\": 54008,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 53814,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"805:7:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"value\": {\n \"hexValue\": \"31\",\n \"id\": 53815,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"839:1:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_1_by_1\",\n \"typeString\": \"int_const 1\"\n },\n \"value\": \"1\"\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 53819,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"846:35:74\",\n \"nodes\": [],\n \"constant\": false,\n \"mutability\": \"mutable\",\n \"name\": \"_ACTIVE_STATE_\",\n \"nameLocation\": \"867:14:74\",\n \"scope\": 54008,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n },\n \"typeName\": {\n \"id\": 53818,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 53817,\n \"name\": \"ActiveState\",\n \"nameLocations\": [\"846:11:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 53806,\n \"src\": \"846:11:74\"\n },\n \"referencedDeclaration\": 53806,\n \"src\": \"846:11:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"id\": 53822,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"887:34:74\",\n \"nodes\": [],\n \"constant\": false,\n \"mutability\": \"mutable\",\n \"name\": \"_LAST_OP_MODE_\",\n \"nameLocation\": \"907:14:74\",\n \"scope\": 54008,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_PostOpMode_$884\",\n \"typeString\": \"enum IPaymaster.PostOpMode\"\n },\n \"typeName\": {\n \"id\": 53821,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 53820,\n \"name\": \"PostOpMode\",\n \"nameLocations\": [\"887:10:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 884,\n \"src\": \"887:10:74\"\n },\n \"referencedDeclaration\": 884,\n \"src\": \"887:10:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_PostOpMode_$884\",\n \"typeString\": \"enum IPaymaster.PostOpMode\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"id\": 53826,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1005:45:74\",\n \"nodes\": [],\n \"constant\": false,\n \"mutability\": \"mutable\",\n \"name\": \"_OPERATORS_\",\n \"nameLocation\": \"1039:11:74\",\n \"scope\": 54008,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_mapping$_t_address_$_t_bool_$\",\n \"typeString\": \"mapping(address => bool)\"\n },\n \"typeName\": {\n \"id\": 53825,\n \"keyName\": \"\",\n \"keyNameLocation\": \"-1:-1:-1\",\n \"keyType\": {\n \"id\": 53823,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1013:7:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"Mapping\",\n \"src\": \"1005:24:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_mapping$_t_address_$_t_bool_$\",\n \"typeString\": \"mapping(address => bool)\"\n },\n \"valueName\": \"\",\n \"valueNameLocation\": \"-1:-1:-1\",\n \"valueType\": {\n \"id\": 53824,\n \"name\": \"bool\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1024:4:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"id\": 53852,\n \"nodeType\": \"ModifierDefinition\",\n \"src\": \"1057:228:74\",\n \"nodes\": [],\n \"body\": {\n \"id\": 53851,\n \"nodeType\": \"Block\",\n \"src\": \"1077:208:74\",\n \"nodes\": [],\n \"statements\": [\n {\n \"condition\": {\n \"id\": 53832,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"!\",\n \"prefix\": true,\n \"src\": \"1091:24:74\",\n \"subExpression\": {\n \"baseExpression\": {\n \"id\": 53828,\n \"name\": \"_OPERATORS_\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53826,\n \"src\": \"1092:11:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_mapping$_t_address_$_t_bool_$\",\n \"typeString\": \"mapping(address => bool)\"\n }\n },\n \"id\": 53831,\n \"indexExpression\": {\n \"expression\": {\n \"id\": 53829,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"1104:3:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 53830,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"1108:6:74\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"1104:10:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"1092:23:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 53839,\n \"nodeType\": \"IfStatement\",\n \"src\": \"1087:89:74\",\n \"trueBody\": {\n \"id\": 53838,\n \"nodeType\": \"Block\",\n \"src\": \"1117:59:74\",\n \"statements\": [\n {\n \"errorCall\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 53834,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"1154:3:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 53835,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"1158:6:74\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"1154:10:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 53833,\n \"name\": \"InvalidOperator\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 54016,\n \"src\": \"1138:15:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$_t_address_$returns$__$\",\n \"typeString\": \"function (address) pure\"\n }\n },\n \"id\": 53836,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"1138:27:74\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 53837,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"1131:34:74\"\n }\n ]\n }\n },\n {\n \"expression\": {\n \"id\": 53843,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 53840,\n \"name\": \"_ACTIVE_STATE_\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53819,\n \"src\": \"1185:14:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"expression\": {\n \"id\": 53841,\n \"name\": \"ActiveState\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53806,\n \"src\": \"1202:11:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_enum$_ActiveState_$53806_$\",\n \"typeString\": \"type(enum ActiveState)\"\n }\n },\n \"id\": 53842,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"1214:6:74\",\n \"memberName\": \"ACTIVE\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53805,\n \"src\": \"1202:18:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"src\": \"1185:35:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"id\": 53844,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1185:35:74\"\n },\n {\n \"id\": 53845,\n \"nodeType\": \"PlaceholderStatement\",\n \"src\": \"1230:1:74\"\n },\n {\n \"expression\": {\n \"id\": 53849,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 53846,\n \"name\": \"_ACTIVE_STATE_\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53819,\n \"src\": \"1241:14:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"expression\": {\n \"id\": 53847,\n \"name\": \"ActiveState\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53806,\n \"src\": \"1258:11:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_enum$_ActiveState_$53806_$\",\n \"typeString\": \"type(enum ActiveState)\"\n }\n },\n \"id\": 53848,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"1270:8:74\",\n \"memberName\": \"INACTIVE\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53804,\n \"src\": \"1258:20:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"src\": \"1241:37:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"id\": 53850,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1241:37:74\"\n }\n ]\n },\n \"name\": \"activate\",\n \"nameLocation\": \"1066:8:74\",\n \"parameters\": {\n \"id\": 53827,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"1074:2:74\"\n },\n \"virtual\": false,\n \"visibility\": \"internal\"\n },\n {\n \"id\": 53865,\n \"nodeType\": \"ModifierDefinition\",\n \"src\": \"1291:131:74\",\n \"nodes\": [],\n \"body\": {\n \"id\": 53864,\n \"nodeType\": \"Block\",\n \"src\": \"1311:111:74\",\n \"nodes\": [],\n \"statements\": [\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n },\n \"id\": 53857,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 53854,\n \"name\": \"_ACTIVE_STATE_\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53819,\n \"src\": \"1325:14:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"expression\": {\n \"id\": 53855,\n \"name\": \"ActiveState\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53806,\n \"src\": \"1343:11:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_enum$_ActiveState_$53806_$\",\n \"typeString\": \"type(enum ActiveState)\"\n }\n },\n \"id\": 53856,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"1355:6:74\",\n \"memberName\": \"ACTIVE\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53805,\n \"src\": \"1343:18:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"src\": \"1325:36:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 53862,\n \"nodeType\": \"IfStatement\",\n \"src\": \"1321:84:74\",\n \"trueBody\": {\n \"id\": 53861,\n \"nodeType\": \"Block\",\n \"src\": \"1363:42:74\",\n \"statements\": [\n {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 53858,\n \"name\": \"Inactive\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 54012,\n \"src\": \"1384:8:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 53859,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"1384:10:74\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 53860,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"1377:17:74\"\n }\n ]\n }\n },\n {\n \"id\": 53863,\n \"nodeType\": \"PlaceholderStatement\",\n \"src\": \"1414:1:74\"\n }\n ]\n },\n \"name\": \"isActive\",\n \"nameLocation\": \"1300:8:74\",\n \"parameters\": {\n \"id\": 53853,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"1308:2:74\"\n },\n \"virtual\": false,\n \"visibility\": \"internal\"\n },\n {\n \"id\": 53880,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"1428:116:74\",\n \"nodes\": [],\n \"body\": {\n \"id\": 53879,\n \"nodeType\": \"Block\",\n \"src\": \"1490:54:74\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"id\": 53877,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 53874,\n \"name\": \"_ACTIVE_STATE_\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53819,\n \"src\": \"1500:14:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"expression\": {\n \"id\": 53875,\n \"name\": \"ActiveState\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53806,\n \"src\": \"1517:11:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_enum$_ActiveState_$53806_$\",\n \"typeString\": \"type(enum ActiveState)\"\n }\n },\n \"id\": 53876,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"1529:8:74\",\n \"memberName\": \"INACTIVE\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53804,\n \"src\": \"1517:20:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"src\": \"1500:37:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_ActiveState_$53806\",\n \"typeString\": \"enum ActiveState\"\n }\n },\n \"id\": 53878,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1500:37:74\"\n }\n ]\n },\n \"implemented\": true,\n \"kind\": \"constructor\",\n \"modifiers\": [\n {\n \"arguments\": [\n {\n \"id\": 53871,\n \"name\": \"entryPoint\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53868,\n \"src\": \"1478:10:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IEntryPoint_$857\",\n \"typeString\": \"contract IEntryPoint\"\n }\n }\n ],\n \"id\": 53872,\n \"kind\": \"baseConstructorSpecifier\",\n \"modifierName\": {\n \"id\": 53870,\n \"name\": \"BasePaymaster\",\n \"nameLocations\": [\"1464:13:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 361,\n \"src\": \"1464:13:74\"\n },\n \"nodeType\": \"ModifierInvocation\",\n \"src\": \"1464:25:74\"\n }\n ],\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"parameters\": {\n \"id\": 53869,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 53868,\n \"mutability\": \"mutable\",\n \"name\": \"entryPoint\",\n \"nameLocation\": \"1452:10:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53880,\n \"src\": \"1440:22:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IEntryPoint_$857\",\n \"typeString\": \"contract IEntryPoint\"\n },\n \"typeName\": {\n \"id\": 53867,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 53866,\n \"name\": \"IEntryPoint\",\n \"nameLocations\": [\"1440:11:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 857,\n \"src\": \"1440:11:74\"\n },\n \"referencedDeclaration\": 857,\n \"src\": \"1440:11:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IEntryPoint_$857\",\n \"typeString\": \"contract IEntryPoint\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"1439:24:74\"\n },\n \"returnParameters\": {\n \"id\": 53873,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"1490:0:74\"\n },\n \"scope\": 54008,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 53915,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"1550:253:74\",\n \"nodes\": [],\n \"body\": {\n \"id\": 53914,\n \"nodeType\": \"Block\",\n \"src\": \"1659:144:74\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [53891],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 53891,\n \"mutability\": \"mutable\",\n \"name\": \"n\",\n \"nameLocation\": \"1677:1:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53914,\n \"src\": \"1669:9:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 53890,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1669:7:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 53894,\n \"initialValue\": {\n \"expression\": {\n \"id\": 53892,\n \"name\": \"operators\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53883,\n \"src\": \"1681:9:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_calldata_ptr\",\n \"typeString\": \"address[] calldata\"\n }\n },\n \"id\": 53893,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"1691:6:74\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"1681:16:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"1669:28:74\"\n },\n {\n \"body\": {\n \"id\": 53912,\n \"nodeType\": \"Block\",\n \"src\": \"1735:62:74\",\n \"statements\": [\n {\n \"expression\": {\n \"id\": 53910,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 53904,\n \"name\": \"_OPERATORS_\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53826,\n \"src\": \"1749:11:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_mapping$_t_address_$_t_bool_$\",\n \"typeString\": \"mapping(address => bool)\"\n }\n },\n \"id\": 53908,\n \"indexExpression\": {\n \"baseExpression\": {\n \"id\": 53905,\n \"name\": \"operators\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53883,\n \"src\": \"1761:9:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_calldata_ptr\",\n \"typeString\": \"address[] calldata\"\n }\n },\n \"id\": 53907,\n \"indexExpression\": {\n \"id\": 53906,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53896,\n \"src\": \"1771:1:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"1761:12:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"1749:25:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"id\": 53909,\n \"name\": \"isAllowed\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53885,\n \"src\": \"1777:9:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"src\": \"1749:37:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 53911,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1749:37:74\"\n }\n ]\n },\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 53900,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 53898,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53896,\n \"src\": \"1723:1:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"id\": 53899,\n \"name\": \"n\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53891,\n \"src\": \"1727:1:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"1723:5:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 53913,\n \"initializationExpression\": {\n \"assignments\": [53896],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 53896,\n \"mutability\": \"mutable\",\n \"name\": \"i\",\n \"nameLocation\": \"1720:1:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53913,\n \"src\": \"1712:9:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 53895,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1712:7:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 53897,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"1712:9:74\"\n },\n \"loopExpression\": {\n \"expression\": {\n \"id\": 53902,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": true,\n \"src\": \"1730:3:74\",\n \"subExpression\": {\n \"id\": 53901,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53896,\n \"src\": \"1732:1:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 53903,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1730:3:74\"\n },\n \"nodeType\": \"ForStatement\",\n \"src\": \"1707:90:74\"\n }\n ]\n },\n \"functionSelector\": \"a3111bdb\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [\n {\n \"id\": 53888,\n \"kind\": \"modifierInvocation\",\n \"modifierName\": {\n \"id\": 53887,\n \"name\": \"onlyOwner\",\n \"nameLocations\": [\"1649:9:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45215,\n \"src\": \"1649:9:74\"\n },\n \"nodeType\": \"ModifierInvocation\",\n \"src\": \"1649:9:74\"\n }\n ],\n \"name\": \"setOperators\",\n \"nameLocation\": \"1559:12:74\",\n \"parameters\": {\n \"id\": 53886,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 53883,\n \"mutability\": \"mutable\",\n \"name\": \"operators\",\n \"nameLocation\": \"1600:9:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53915,\n \"src\": \"1581:28:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"calldata\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_calldata_ptr\",\n \"typeString\": \"address[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 53881,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1581:7:74\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"id\": 53882,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"1581:9:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_storage_ptr\",\n \"typeString\": \"address[]\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 53885,\n \"mutability\": \"mutable\",\n \"name\": \"isAllowed\",\n \"nameLocation\": \"1624:9:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53915,\n \"src\": \"1619:14:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"typeName\": {\n \"id\": 53884,\n \"name\": \"bool\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1619:4:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"1571:68:74\"\n },\n \"returnParameters\": {\n \"id\": 53889,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"1659:0:74\"\n },\n \"scope\": 54008,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"external\"\n },\n {\n \"id\": 53949,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"1809:427:74\",\n \"nodes\": [],\n \"body\": {\n \"id\": 53948,\n \"nodeType\": \"Block\",\n \"src\": \"1946:290:74\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [53927, 53929],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 53927,\n \"mutability\": \"mutable\",\n \"name\": \"success\",\n \"nameLocation\": \"1962:7:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53948,\n \"src\": \"1957:12:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"typeName\": {\n \"id\": 53926,\n \"name\": \"bool\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1957:4:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 53929,\n \"mutability\": \"mutable\",\n \"name\": \"returnData\",\n \"nameLocation\": \"1984:10:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53948,\n \"src\": \"1971:23:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 53928,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1971:5:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 53940,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 53938,\n \"name\": \"callData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53919,\n \"src\": \"2059:8:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_calldata_ptr\",\n \"typeString\": \"bytes calldata\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_calldata_ptr\",\n \"typeString\": \"bytes calldata\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_calldata_ptr\",\n \"typeString\": \"bytes calldata\"\n }\n ],\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 53932,\n \"name\": \"target\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53917,\n \"src\": \"2006:6:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 53931,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"1998:8:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_payable_$\",\n \"typeString\": \"type(address payable)\"\n },\n \"typeName\": {\n \"id\": 53930,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1998:8:74\",\n \"stateMutability\": \"payable\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 53933,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"1998:15:74\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"id\": 53934,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"2014:4:74\",\n \"memberName\": \"call\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"1998:20:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function (bytes memory) payable returns (bool,bytes memory)\"\n }\n },\n \"id\": 53937,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"names\": [\"value\"],\n \"nodeType\": \"FunctionCallOptions\",\n \"options\": [\n {\n \"expression\": {\n \"id\": 53935,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"2039:3:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 53936,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"2043:5:74\",\n \"memberName\": \"value\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"2039:9:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"src\": \"1998:60:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value\",\n \"typeString\": \"function (bytes memory) payable returns (bool,bytes memory)\"\n }\n },\n \"id\": 53939,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"1998:70:74\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$_t_bool_$_t_bytes_memory_ptr_$\",\n \"typeString\": \"tuple(bool,bytes memory)\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"1956:112:74\"\n },\n {\n \"condition\": {\n \"id\": 53942,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"!\",\n \"prefix\": true,\n \"src\": \"2082:8:74\",\n \"subExpression\": {\n \"id\": 53941,\n \"name\": \"success\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53927,\n \"src\": \"2083:7:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 53945,\n \"nodeType\": \"IfStatement\",\n \"src\": \"2078:125:74\",\n \"trueBody\": {\n \"id\": 53944,\n \"nodeType\": \"Block\",\n \"src\": \"2092:111:74\",\n \"statements\": [\n {\n \"AST\": {\n \"nodeType\": \"YulBlock\",\n \"src\": \"2115:78:74\",\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"name\": \"returnData\",\n \"nodeType\": \"YulIdentifier\",\n \"src\": \"2144:10:74\"\n },\n {\n \"kind\": \"number\",\n \"nodeType\": \"YulLiteral\",\n \"src\": \"2156:2:74\",\n \"type\": \"\",\n \"value\": \"32\"\n }\n ],\n \"functionName\": {\n \"name\": \"add\",\n \"nodeType\": \"YulIdentifier\",\n \"src\": \"2140:3:74\"\n },\n \"nodeType\": \"YulFunctionCall\",\n \"src\": \"2140:19:74\"\n },\n {\n \"arguments\": [\n {\n \"name\": \"returnData\",\n \"nodeType\": \"YulIdentifier\",\n \"src\": \"2167:10:74\"\n }\n ],\n \"functionName\": {\n \"name\": \"mload\",\n \"nodeType\": \"YulIdentifier\",\n \"src\": \"2161:5:74\"\n },\n \"nodeType\": \"YulFunctionCall\",\n \"src\": \"2161:17:74\"\n }\n ],\n \"functionName\": {\n \"name\": \"revert\",\n \"nodeType\": \"YulIdentifier\",\n \"src\": \"2133:6:74\"\n },\n \"nodeType\": \"YulFunctionCall\",\n \"src\": \"2133:46:74\"\n },\n \"nodeType\": \"YulExpressionStatement\",\n \"src\": \"2133:46:74\"\n }\n ]\n },\n \"evmVersion\": \"paris\",\n \"externalReferences\": [\n {\n \"declaration\": 53929,\n \"isOffset\": false,\n \"isSlot\": false,\n \"src\": \"2144:10:74\",\n \"valueSize\": 1\n },\n {\n \"declaration\": 53929,\n \"isOffset\": false,\n \"isSlot\": false,\n \"src\": \"2167:10:74\",\n \"valueSize\": 1\n }\n ],\n \"id\": 53943,\n \"nodeType\": \"InlineAssembly\",\n \"src\": \"2106:87:74\"\n }\n ]\n }\n },\n {\n \"expression\": {\n \"id\": 53946,\n \"name\": \"returnData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53929,\n \"src\": \"2219:10:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n \"functionReturnParameters\": 53925,\n \"id\": 53947,\n \"nodeType\": \"Return\",\n \"src\": \"2212:17:74\"\n }\n ]\n },\n \"functionSelector\": \"c458b07b\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [\n {\n \"id\": 53922,\n \"kind\": \"modifierInvocation\",\n \"modifierName\": {\n \"id\": 53921,\n \"name\": \"activate\",\n \"nameLocations\": [\"1914:8:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 53852,\n \"src\": \"1914:8:74\"\n },\n \"nodeType\": \"ModifierInvocation\",\n \"src\": \"1914:8:74\"\n }\n ],\n \"name\": \"activateAndCall\",\n \"nameLocation\": \"1818:15:74\",\n \"parameters\": {\n \"id\": 53920,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 53917,\n \"mutability\": \"mutable\",\n \"name\": \"target\",\n \"nameLocation\": \"1851:6:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53949,\n \"src\": \"1843:14:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 53916,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1843:7:74\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 53919,\n \"mutability\": \"mutable\",\n \"name\": \"callData\",\n \"nameLocation\": \"1882:8:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53949,\n \"src\": \"1867:23:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"calldata\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_calldata_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 53918,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1867:5:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"1833:63:74\"\n },\n \"returnParameters\": {\n \"id\": 53925,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 53924,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53949,\n \"src\": \"1932:12:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 53923,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1932:5:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"1931:14:74\"\n },\n \"scope\": 54008,\n \"stateMutability\": \"payable\",\n \"virtual\": false,\n \"visibility\": \"external\"\n },\n {\n \"id\": 53958,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"2242:98:74\",\n \"nodes\": [],\n \"body\": {\n \"id\": 53957,\n \"nodeType\": \"Block\",\n \"src\": \"2302:38:74\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"id\": 53955,\n \"name\": \"_LAST_OP_MODE_\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53822,\n \"src\": \"2319:14:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_PostOpMode_$884\",\n \"typeString\": \"enum IPaymaster.PostOpMode\"\n }\n },\n \"functionReturnParameters\": 53954,\n \"id\": 53956,\n \"nodeType\": \"Return\",\n \"src\": \"2312:21:74\"\n }\n ]\n },\n \"baseFunctions\": [53774],\n \"functionSelector\": \"255ed947\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"getLastOpMode\",\n \"nameLocation\": \"2251:13:74\",\n \"parameters\": {\n \"id\": 53950,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2264:2:74\"\n },\n \"returnParameters\": {\n \"id\": 53954,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 53953,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53958,\n \"src\": \"2290:10:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_PostOpMode_$884\",\n \"typeString\": \"enum IPaymaster.PostOpMode\"\n },\n \"typeName\": {\n \"id\": 53952,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 53951,\n \"name\": \"PostOpMode\",\n \"nameLocations\": [\"2290:10:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 884,\n \"src\": \"2290:10:74\"\n },\n \"referencedDeclaration\": 884,\n \"src\": \"2290:10:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_PostOpMode_$884\",\n \"typeString\": \"enum IPaymaster.PostOpMode\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2289:12:74\"\n },\n \"scope\": 54008,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"external\"\n },\n {\n \"id\": 53988,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"2641:435:74\",\n \"nodes\": [],\n \"body\": {\n \"id\": 53987,\n \"nodeType\": \"Block\",\n \"src\": \"2895:181:74\",\n \"nodes\": [],\n \"statements\": [\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 53978,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"expression\": {\n \"expression\": {\n \"id\": 53974,\n \"name\": \"userOp\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53962,\n \"src\": \"2909:6:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_UserOperation_$1045_calldata_ptr\",\n \"typeString\": \"struct UserOperation calldata\"\n }\n },\n \"id\": 53975,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"2916:16:74\",\n \"memberName\": \"paymasterAndData\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 1042,\n \"src\": \"2909:23:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_calldata_ptr\",\n \"typeString\": \"bytes calldata\"\n }\n },\n \"id\": 53976,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"2933:6:74\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"2909:30:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"hexValue\": \"3230\",\n \"id\": 53977,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"2943:2:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_20_by_1\",\n \"typeString\": \"int_const 20\"\n },\n \"value\": \"20\"\n },\n \"src\": \"2909:36:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 53986,\n \"nodeType\": \"IfStatement\",\n \"src\": \"2905:165:74\",\n \"trueBody\": {\n \"id\": 53985,\n \"nodeType\": \"Block\",\n \"src\": \"2947:123:74\",\n \"statements\": [\n {\n \"errorCall\": {\n \"arguments\": [\n {\n \"expression\": {\n \"expression\": {\n \"id\": 53980,\n \"name\": \"userOp\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53962,\n \"src\": \"3015:6:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_UserOperation_$1045_calldata_ptr\",\n \"typeString\": \"struct UserOperation calldata\"\n }\n },\n \"id\": 53981,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"3022:16:74\",\n \"memberName\": \"paymasterAndData\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 1042,\n \"src\": \"3015:23:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_calldata_ptr\",\n \"typeString\": \"bytes calldata\"\n }\n },\n \"id\": 53982,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"3039:6:74\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"3015:30:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 53979,\n \"name\": \"InvalidPaymasterAndDataLength\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 54020,\n \"src\": \"2968:29:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$_t_uint256_$returns$__$\",\n \"typeString\": \"function (uint256) pure\"\n }\n },\n \"id\": 53983,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2968:91:74\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 53984,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"2961:98:74\"\n }\n ]\n }\n }\n ]\n },\n \"baseFunctions\": [206],\n \"documentation\": {\n \"id\": 53959,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2346:290:74\",\n \"text\": \" @notice Validate a user operation that is using this paymaster.\\n @param userOp ERC-4337 UserOperation.\\n @return context The context containing the sponsor, spender, gasPriceUserOp, and opHash.\\n @return validationData The validation result.\"\n },\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"_validatePaymasterUserOp\",\n \"nameLocation\": \"2650:24:74\",\n \"overrides\": {\n \"id\": 53968,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"2819:8:74\"\n },\n \"parameters\": {\n \"id\": 53967,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 53962,\n \"mutability\": \"mutable\",\n \"name\": \"userOp\",\n \"nameLocation\": \"2707:6:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53988,\n \"src\": \"2684:29:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"calldata\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_UserOperation_$1045_calldata_ptr\",\n \"typeString\": \"struct UserOperation\"\n },\n \"typeName\": {\n \"id\": 53961,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 53960,\n \"name\": \"UserOperation\",\n \"nameLocations\": [\"2684:13:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 1045,\n \"src\": \"2684:13:74\"\n },\n \"referencedDeclaration\": 1045,\n \"src\": \"2684:13:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_UserOperation_$1045_storage_ptr\",\n \"typeString\": \"struct UserOperation\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 53964,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53988,\n \"src\": \"2723:7:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 53963,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2723:7:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 53966,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53988,\n \"src\": \"2753:7:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 53965,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2753:7:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2674:106:74\"\n },\n \"returnParameters\": {\n \"id\": 53973,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 53970,\n \"mutability\": \"mutable\",\n \"name\": \"context\",\n \"nameLocation\": \"2858:7:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53988,\n \"src\": \"2845:20:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 53969,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2845:5:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 53972,\n \"mutability\": \"mutable\",\n \"name\": \"validationData\",\n \"nameLocation\": \"2875:14:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 53988,\n \"src\": \"2867:22:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 53971,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2867:7:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2844:46:74\"\n },\n \"scope\": 54008,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"internal\"\n },\n {\n \"id\": 54007,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3431:188:74\",\n \"nodes\": [],\n \"body\": {\n \"id\": 54006,\n \"nodeType\": \"Block\",\n \"src\": \"3581:38:74\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"id\": 54004,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 54002,\n \"name\": \"_LAST_OP_MODE_\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53822,\n \"src\": \"3591:14:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_PostOpMode_$884\",\n \"typeString\": \"enum IPaymaster.PostOpMode\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"id\": 54003,\n \"name\": \"mode\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53992,\n \"src\": \"3608:4:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_PostOpMode_$884\",\n \"typeString\": \"enum IPaymaster.PostOpMode\"\n }\n },\n \"src\": \"3591:21:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_PostOpMode_$884\",\n \"typeString\": \"enum IPaymaster.PostOpMode\"\n }\n },\n \"id\": 54005,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"3591:21:74\"\n }\n ]\n },\n \"baseFunctions\": [249],\n \"documentation\": {\n \"id\": 53989,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3082:344:74\",\n \"text\": \" @notice Post-operation handler.\\n @dev Records the result of the user operation (e.g. success or revert).\\n Also, reverts if the paymaster was not active, ensuring that only allowed\\n operators can make use of this paymaster.\\n @param mode The mode enum representing the operation result.\"\n },\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [\n {\n \"id\": 54000,\n \"kind\": \"modifierInvocation\",\n \"modifierName\": {\n \"id\": 53999,\n \"name\": \"isActive\",\n \"nameLocations\": [\"3572:8:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 53865,\n \"src\": \"3572:8:74\"\n },\n \"nodeType\": \"ModifierInvocation\",\n \"src\": \"3572:8:74\"\n }\n ],\n \"name\": \"_postOp\",\n \"nameLocation\": \"3440:7:74\",\n \"overrides\": {\n \"id\": 53998,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3563:8:74\"\n },\n \"parameters\": {\n \"id\": 53997,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 53992,\n \"mutability\": \"mutable\",\n \"name\": \"mode\",\n \"nameLocation\": \"3468:4:74\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 54007,\n \"src\": \"3457:15:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_PostOpMode_$884\",\n \"typeString\": \"enum IPaymaster.PostOpMode\"\n },\n \"typeName\": {\n \"id\": 53991,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 53990,\n \"name\": \"PostOpMode\",\n \"nameLocations\": [\"3457:10:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 884,\n \"src\": \"3457:10:74\"\n },\n \"referencedDeclaration\": 884,\n \"src\": \"3457:10:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_PostOpMode_$884\",\n \"typeString\": \"enum IPaymaster.PostOpMode\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 53994,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 54007,\n \"src\": \"3482:14:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"calldata\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_calldata_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 53993,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3482:5:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 53996,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 54007,\n \"src\": \"3520:7:74\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 53995,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3520:7:74\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3447:106:74\"\n },\n \"returnParameters\": {\n \"id\": 54001,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"3581:0:74\"\n },\n \"scope\": 54008,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"internal\"\n }\n ],\n \"abstract\": false,\n \"baseContracts\": [\n {\n \"baseName\": {\n \"id\": 53808,\n \"name\": \"BasePaymaster\",\n \"nameLocations\": [\"712:13:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 361,\n \"src\": \"712:13:74\"\n },\n \"id\": 53809,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"712:13:74\"\n },\n {\n \"baseName\": {\n \"id\": 53810,\n \"name\": \"InspectablePaymasterInterface\",\n \"nameLocations\": [\"731:29:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 53775,\n \"src\": \"731:29:74\"\n },\n \"id\": 53811,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"731:29:74\"\n },\n {\n \"baseName\": {\n \"id\": 53812,\n \"name\": \"CheckoutPaymasterEventsAndErrors\",\n \"nameLocations\": [\"766:32:74\"],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 54021,\n \"src\": \"766:32:74\"\n },\n \"id\": 53813,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"766:32:74\"\n }\n ],\n \"canonicalName\": \"CheckoutPaymaster\",\n \"contractDependencies\": [],\n \"contractKind\": \"contract\",\n \"documentation\": {\n \"id\": 53807,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"623:54:74\",\n \"text\": \" @title CheckoutPaymaster\\n @author Fun.xyz\"\n },\n \"fullyImplemented\": true,\n \"linearizedBaseContracts\": [\n 54008, 54021, 53775, 361, 45296, 47631, 911\n ],\n \"name\": \"CheckoutPaymaster\",\n \"nameLocation\": \"687:17:74\",\n \"scope\": 54009,\n \"usedErrors\": [54012, 54016, 54020],\n \"usedEvents\": [45197]\n }\n ],\n \"license\": \"UNLICENSED\"\n },\n \"id\": 74\n}\n", "{\n \"name\": \"EntryPoint\",\n \"abi\": [\n {\n \"name\": \"ExecutionResult\",\n \"type\": \"error\",\n \"inputs\": [\n { \"name\": \"preOpGas\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"paid\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"validAfter\", \"type\": \"uint48\", \"internalType\": \"uint48\" },\n { \"name\": \"validUntil\", \"type\": \"uint48\", \"internalType\": \"uint48\" },\n { \"name\": \"targetSuccess\", \"type\": \"bool\", \"internalType\": \"bool\" },\n { \"name\": \"targetResult\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ]\n },\n {\n \"name\": \"FailedOp\",\n \"type\": \"error\",\n \"inputs\": [\n { \"name\": \"opIndex\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"reason\", \"type\": \"string\", \"internalType\": \"string\" }\n ]\n },\n {\n \"name\": \"SenderAddressResult\",\n \"type\": \"error\",\n \"inputs\": [\n { \"name\": \"sender\", \"type\": \"address\", \"internalType\": \"address\" }\n ]\n },\n {\n \"name\": \"SignatureValidationFailed\",\n \"type\": \"error\",\n \"inputs\": [\n { \"name\": \"aggregator\", \"type\": \"address\", \"internalType\": \"address\" }\n ]\n },\n {\n \"name\": \"ValidationResult\",\n \"type\": \"error\",\n \"inputs\": [\n {\n \"name\": \"returnInfo\",\n \"components\": [\n {\n \"name\": \"preOpGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n { \"name\": \"prefund\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"sigFailed\", \"type\": \"bool\", \"internalType\": \"bool\" },\n {\n \"name\": \"validAfter\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"validUntil\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"paymasterContext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"internalType\": \"structIEntryPoint.ReturnInfo\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"senderInfo\",\n \"components\": [\n { \"name\": \"stake\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n {\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"internalType\": \"structIStakeManager.StakeInfo\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"factoryInfo\",\n \"components\": [\n { \"name\": \"stake\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n {\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"internalType\": \"structIStakeManager.StakeInfo\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"paymasterInfo\",\n \"components\": [\n { \"name\": \"stake\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n {\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"internalType\": \"structIStakeManager.StakeInfo\",\n \"type\": \"tuple\"\n }\n ]\n },\n {\n \"name\": \"ValidationResultWithAggregation\",\n \"type\": \"error\",\n \"inputs\": [\n {\n \"name\": \"returnInfo\",\n \"components\": [\n {\n \"name\": \"preOpGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n { \"name\": \"prefund\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"sigFailed\", \"type\": \"bool\", \"internalType\": \"bool\" },\n {\n \"name\": \"validAfter\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"validUntil\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"paymasterContext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"internalType\": \"structIEntryPoint.ReturnInfo\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"senderInfo\",\n \"components\": [\n { \"name\": \"stake\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n {\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"internalType\": \"structIStakeManager.StakeInfo\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"factoryInfo\",\n \"components\": [\n { \"name\": \"stake\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n {\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"internalType\": \"structIStakeManager.StakeInfo\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"paymasterInfo\",\n \"components\": [\n { \"name\": \"stake\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n {\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"internalType\": \"structIStakeManager.StakeInfo\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"aggregatorInfo\",\n \"components\": [\n {\n \"name\": \"aggregator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"stakeInfo\",\n \"components\": [\n {\n \"name\": \"stake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"internalType\": \"structIStakeManager.StakeInfo\",\n \"type\": \"tuple\"\n }\n ],\n \"internalType\": \"structIEntryPoint.AggregatorStakeInfo\",\n \"type\": \"tuple\"\n }\n ]\n },\n {\n \"name\": \"AccountDeployed\",\n \"anonymous\": false,\n \"type\": \"event\",\n \"inputs\": [\n {\n \"name\": \"userOpHash\",\n \"internalType\": \"bytes32\",\n \"type\": \"bytes32\",\n \"indexed\": true\n },\n {\n \"name\": \"sender\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": true\n },\n {\n \"name\": \"factory\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": false\n },\n {\n \"name\": \"paymaster\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": false\n }\n ]\n },\n {\n \"name\": \"BeforeExecution\",\n \"anonymous\": false,\n \"type\": \"event\",\n \"inputs\": []\n },\n {\n \"name\": \"Deposited\",\n \"anonymous\": false,\n \"type\": \"event\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": true\n },\n {\n \"name\": \"totalDeposit\",\n \"internalType\": \"uint256\",\n \"type\": \"uint256\",\n \"indexed\": false\n }\n ]\n },\n {\n \"name\": \"SignatureAggregatorChanged\",\n \"anonymous\": false,\n \"type\": \"event\",\n \"inputs\": [\n {\n \"name\": \"aggregator\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": true\n }\n ]\n },\n {\n \"name\": \"StakeLocked\",\n \"anonymous\": false,\n \"type\": \"event\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": true\n },\n {\n \"name\": \"totalStaked\",\n \"internalType\": \"uint256\",\n \"type\": \"uint256\",\n \"indexed\": false\n },\n {\n \"name\": \"unstakeDelaySec\",\n \"internalType\": \"uint256\",\n \"type\": \"uint256\",\n \"indexed\": false\n }\n ]\n },\n {\n \"name\": \"StakeUnlocked\",\n \"anonymous\": false,\n \"type\": \"event\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": true\n },\n {\n \"name\": \"withdrawTime\",\n \"internalType\": \"uint256\",\n \"type\": \"uint256\",\n \"indexed\": false\n }\n ]\n },\n {\n \"name\": \"StakeWithdrawn\",\n \"anonymous\": false,\n \"type\": \"event\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": true\n },\n {\n \"name\": \"withdrawAddress\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": false\n },\n {\n \"name\": \"amount\",\n \"internalType\": \"uint256\",\n \"type\": \"uint256\",\n \"indexed\": false\n }\n ]\n },\n {\n \"name\": \"UserOperationEvent\",\n \"anonymous\": false,\n \"type\": \"event\",\n \"inputs\": [\n {\n \"name\": \"userOpHash\",\n \"internalType\": \"bytes32\",\n \"type\": \"bytes32\",\n \"indexed\": true\n },\n {\n \"name\": \"sender\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": true\n },\n {\n \"name\": \"paymaster\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": true\n },\n {\n \"name\": \"nonce\",\n \"internalType\": \"uint256\",\n \"type\": \"uint256\",\n \"indexed\": false\n },\n {\n \"name\": \"success\",\n \"internalType\": \"bool\",\n \"type\": \"bool\",\n \"indexed\": false\n },\n {\n \"name\": \"actualGasCost\",\n \"internalType\": \"uint256\",\n \"type\": \"uint256\",\n \"indexed\": false\n },\n {\n \"name\": \"actualGasUsed\",\n \"internalType\": \"uint256\",\n \"type\": \"uint256\",\n \"indexed\": false\n }\n ]\n },\n {\n \"name\": \"UserOperationRevertReason\",\n \"anonymous\": false,\n \"type\": \"event\",\n \"inputs\": [\n {\n \"name\": \"userOpHash\",\n \"internalType\": \"bytes32\",\n \"type\": \"bytes32\",\n \"indexed\": true\n },\n {\n \"name\": \"sender\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": true\n },\n {\n \"name\": \"nonce\",\n \"internalType\": \"uint256\",\n \"type\": \"uint256\",\n \"indexed\": false\n },\n {\n \"name\": \"revertReason\",\n \"internalType\": \"bytes\",\n \"type\": \"bytes\",\n \"indexed\": false\n }\n ]\n },\n {\n \"name\": \"Withdrawn\",\n \"anonymous\": false,\n \"type\": \"event\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": true\n },\n {\n \"name\": \"withdrawAddress\",\n \"internalType\": \"address\",\n \"type\": \"address\",\n \"indexed\": false\n },\n {\n \"name\": \"amount\",\n \"internalType\": \"uint256\",\n \"type\": \"uint256\",\n \"indexed\": false\n }\n ]\n },\n {\n \"name\": \"SIG_VALIDATION_FAILED\",\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"inputs\": []\n },\n {\n \"name\": \"_validateSenderAndPaymaster\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"inputs\": [\n { \"name\": \"initCode\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n { \"name\": \"sender\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"paymasterAndData\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ]\n },\n {\n \"name\": \"addStake\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\",\n \"inputs\": [\n {\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ]\n },\n {\n \"name\": \"balanceOf\",\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"inputs\": [\n { \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" }\n ]\n },\n {\n \"name\": \"depositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\",\n \"inputs\": [\n { \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" }\n ]\n },\n {\n \"name\": \"deposits\",\n \"outputs\": [\n { \"name\": \"deposit\", \"type\": \"uint112\", \"internalType\": \"uint112\" },\n { \"name\": \"staked\", \"type\": \"bool\", \"internalType\": \"bool\" },\n { \"name\": \"stake\", \"type\": \"uint112\", \"internalType\": \"uint112\" },\n {\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n { \"name\": \"withdrawTime\", \"type\": \"uint48\", \"internalType\": \"uint48\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"inputs\": [{ \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" }]\n },\n {\n \"name\": \"getDepositInfo\",\n \"outputs\": [\n {\n \"name\": \"info\",\n \"components\": [\n { \"name\": \"deposit\", \"type\": \"uint112\", \"internalType\": \"uint112\" },\n { \"name\": \"staked\", \"type\": \"bool\", \"internalType\": \"bool\" },\n { \"name\": \"stake\", \"type\": \"uint112\", \"internalType\": \"uint112\" },\n {\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"withdrawTime\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"internalType\": \"structIStakeManager.DepositInfo\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"inputs\": [\n { \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" }\n ]\n },\n {\n \"name\": \"getNonce\",\n \"outputs\": [\n { \"name\": \"nonce\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"inputs\": [\n { \"name\": \"sender\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"key\", \"type\": \"uint192\", \"internalType\": \"uint192\" }\n ]\n },\n {\n \"name\": \"getSenderAddress\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"inputs\": [\n { \"name\": \"initCode\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ]\n },\n {\n \"name\": \"getUserOpHash\",\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"inputs\": [\n {\n \"name\": \"userOp\",\n \"components\": [\n { \"name\": \"sender\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"nonce\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"initCode\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n { \"name\": \"callData\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n {\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n { \"name\": \"signature\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"internalType\": \"structUserOperation\",\n \"type\": \"tuple\"\n }\n ]\n },\n {\n \"name\": \"handleAggregatedOps\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"inputs\": [\n {\n \"name\": \"opsPerAggregator\",\n \"components\": [\n {\n \"name\": \"userOps\",\n \"components\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initCode\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"callData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"internalType\": \"structUserOperation[]\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"aggregator\",\n \"type\": \"address\",\n \"internalType\": \"contractIAggregator\"\n },\n { \"name\": \"signature\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"internalType\": \"structIEntryPoint.UserOpsPerAggregator[]\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"beneficiary\",\n \"type\": \"address\",\n \"internalType\": \"addresspayable\"\n }\n ]\n },\n {\n \"name\": \"handleOps\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"inputs\": [\n {\n \"name\": \"ops\",\n \"components\": [\n { \"name\": \"sender\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"nonce\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"initCode\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n { \"name\": \"callData\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n {\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n { \"name\": \"signature\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"internalType\": \"structUserOperation[]\",\n \"type\": \"tuple[]\"\n },\n {\n \"name\": \"beneficiary\",\n \"type\": \"address\",\n \"internalType\": \"addresspayable\"\n }\n ]\n },\n {\n \"name\": \"incrementNonce\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"inputs\": [\n { \"name\": \"key\", \"type\": \"uint192\", \"internalType\": \"uint192\" }\n ]\n },\n {\n \"name\": \"innerHandleOp\",\n \"outputs\": [\n {\n \"name\": \"actualGasCost\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"inputs\": [\n { \"name\": \"callData\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n {\n \"name\": \"opInfo\",\n \"components\": [\n {\n \"name\": \"mUserOp\",\n \"components\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"paymaster\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"internalType\": \"structEntryPoint.MemoryUserOp\",\n \"type\": \"tuple\"\n },\n {\n \"name\": \"userOpHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n { \"name\": \"prefund\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n {\n \"name\": \"contextOffset\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n { \"name\": \"preOpGas\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ],\n \"internalType\": \"structEntryPoint.UserOpInfo\",\n \"type\": \"tuple\"\n },\n { \"name\": \"context\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ]\n },\n {\n \"name\": \"nonceSequenceNumber\",\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"inputs\": [\n { \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"\", \"type\": \"uint192\", \"internalType\": \"uint192\" }\n ]\n },\n {\n \"name\": \"simulateHandleOp\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"inputs\": [\n {\n \"name\": \"op\",\n \"components\": [\n { \"name\": \"sender\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"nonce\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"initCode\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n { \"name\": \"callData\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n {\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n { \"name\": \"signature\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"internalType\": \"structUserOperation\",\n \"type\": \"tuple\"\n },\n { \"name\": \"target\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"targetCallData\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ]\n },\n {\n \"name\": \"simulateValidation\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"inputs\": [\n {\n \"name\": \"userOp\",\n \"components\": [\n { \"name\": \"sender\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"nonce\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"initCode\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n { \"name\": \"callData\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n {\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n { \"name\": \"signature\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"internalType\": \"structUserOperation\",\n \"type\": \"tuple\"\n }\n ]\n },\n {\n \"name\": \"unlockStake\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"inputs\": []\n },\n {\n \"name\": \"withdrawStake\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"inputs\": [\n {\n \"name\": \"withdrawAddress\",\n \"type\": \"address\",\n \"internalType\": \"addresspayable\"\n }\n ]\n },\n {\n \"name\": \"withdrawTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"inputs\": [\n {\n \"name\": \"withdrawAddress\",\n \"type\": \"address\",\n \"internalType\": \"addresspayable\"\n },\n {\n \"name\": \"withdrawAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n { \"type\": \"receive\", \"stateMutability\": \"payable\" }\n ],\n \"addresses\": {\n \"1\": \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n \"5\": \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n \"10\": \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n \"137\": \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n \"5000\": \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n \"8453\": \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n \"36865\": \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n \"42161\": \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n \"421614\": \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n \"534352\": \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\"\n }\n}\n", "{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"sender\",\"type\":\"address\"}],\"name\":\"airdrop\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"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\":\"amount\",\"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\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"contractName\":\"IERC20\"}", "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]}", "{\n \"name\": \"EstimationPaymaster\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IEntryPoint\",\n \"name\": \"_entryPoint\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"contract IEntryPoint\",\n \"name\": \"entryPoint\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"PaymasterCreated\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"acceptOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }\n ],\n \"name\": \"addDepositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"addStakeToEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"name\": \"balances\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"entryPoint\",\n \"outputs\": [\n {\n \"internalType\": \"contract IEntryPoint\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pendingOwner\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum IPaymaster.PostOpMode\",\n \"name\": \"mode\",\n \"type\": \"uint8\"\n },\n { \"internalType\": \"bytes\", \"name\": \"context\", \"type\": \"bytes\" },\n {\n \"internalType\": \"uint256\",\n \"name\": \"actualGasCost\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"postOp\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"newOwner\", \"type\": \"address\" }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unlockStakeFromEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n { \"internalType\": \"address\", \"name\": \"sender\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"nonce\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"initCode\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes\", \"name\": \"callData\", \"type\": \"bytes\" },\n {\n \"internalType\": \"uint256\",\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\"\n },\n { \"internalType\": \"bytes\", \"name\": \"signature\", \"type\": \"bytes\" }\n ],\n \"internalType\": \"struct UserOperation\",\n \"name\": \"userOp\",\n \"type\": \"tuple\"\n },\n { \"internalType\": \"bytes32\", \"name\": \"userOpHash\", \"type\": \"bytes32\" },\n { \"internalType\": \"uint256\", \"name\": \"maxCost\", \"type\": \"uint256\" }\n ],\n \"name\": \"validatePaymasterUserOp\",\n \"outputs\": [\n { \"internalType\": \"bytes\", \"name\": \"context\", \"type\": \"bytes\" },\n { \"internalType\": \"uint256\", \"name\": \"sigTimeRange\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" },\n {\n \"internalType\": \"address payable\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawDepositTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address payable\",\n \"name\": \"withdrawAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawStakeFromEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"addresses\": {\n \"1\": \"0xe1B7B9d686948745a6425DF97a6480f5Bf75e508\",\n \"5\": \"0x85c7e575Ee64A30e15eB76cCEc9bdD7cc59A8D5C\",\n \"10\": \"0x1B374E0b0bc3b8F1613a67C0b805Bc84e66E4F1F\",\n \"137\": \"0xf6355d83c559f0Ff373C7E0A8FD6c014076E1118\",\n \"8453\": \"0x3053451A384524C57dAF9420f8d8b8464555E1e8\",\n \"36865\": \"0xe1B7B9d686948745a6425DF97a6480f5Bf75e508\",\n \"42161\": \"0x5ceb145d53841d2f6255fE668e5eBbd286B2C862\",\n \"421614\": \"0xaB9893703641d1B871B0F47f597CcAD7f922503E\",\n \"5000\": \"0x091a5301c118A8832B4574e8B88c94A14343eb52\",\n \"534352\": \"0x5ceb145d53841d2f6255fE668e5eBbd286B2C862\"\n }\n}\n", "{\n \"name\": \"FeePercentOracle\",\n \"abi\": [\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Erc20Withdrawn\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"EthWithdrawn\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint120\",\n \"name\": \"feepercent\",\n \"type\": \"uint120\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint8\",\n \"name\": \"decimals\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"FeePercentSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"acceptOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [{ \"internalType\": \"uint8\", \"name\": \"\", \"type\": \"uint8\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"feepercent\",\n \"outputs\": [{ \"internalType\": \"uint120\", \"name\": \"\", \"type\": \"uint120\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"getFee\",\n \"outputs\": [\n { \"internalType\": \"uint256\", \"name\": \"funCut\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"recipCut\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pendingOwner\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"uint120\", \"name\": \"_feepercent\", \"type\": \"uint120\" },\n { \"internalType\": \"uint8\", \"name\": \"_decimals\", \"type\": \"uint8\" }\n ],\n \"name\": \"setValues\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"newOwner\", \"type\": \"address\" }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"withdrawErc\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"withdrawEth\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n { \"stateMutability\": \"payable\", \"type\": \"receive\" }\n ],\n \"addresses\": {\n \"1\": \"0x118c66c1D05F80784E164541b1556045c9018261\",\n \"5\": \"0xDDcD7DF0558536472eD448846C6608bace86f7aC\",\n \"10\": \"0xDDcD7DF0558536472eD448846C6608bace86f7aC\",\n \"137\": \"0xDDcD7DF0558536472eD448846C6608bace86f7aC\",\n \"8453\": \"0xDDcD7DF0558536472eD448846C6608bace86f7aC\",\n \"36865\": \"0x118c66c1D05F80784E164541b1556045c9018261\",\n \"42161\": \"0xDDcD7DF0558536472eD448846C6608bace86f7aC\",\n \"421614\": \"0x327f55ECAAa8A38BA71a1594EEFDc96F8f1b7f28\",\n \"5000\": \"0x00422527E4b6A898F3CDA4f43Dd456daD7633c4D\",\n \"534352\": \"0x1CaD2167bd7C42aF6ED8E2079558D43A8fC72f0b\"\n }\n}\n", "{\n \"name\": \"FunWallet\",\n \"abi\": [\n { \"inputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"constructor\" },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"previousAdmin\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"newAdmin\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"beacon\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"BeaconUpgraded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DepositToEntryPoint\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newEntryPoint\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"EntryPointChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"dest\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"TransferERC20\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"userOpHash\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n { \"internalType\": \"address\", \"name\": \"sender\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"nonce\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"initCode\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes\", \"name\": \"callData\", \"type\": \"bytes\" },\n {\n \"internalType\": \"uint256\",\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\"\n },\n { \"internalType\": \"bytes\", \"name\": \"signature\", \"type\": \"bytes\" }\n ],\n \"indexed\": false,\n \"internalType\": \"structUserOperation\",\n \"name\": \"userOp\",\n \"type\": \"tuple\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"sigTimeRange\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"missingAccountFunds\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"UserOpValidated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"withdrawAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"WithdrawFromEntryPoint\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"EIP712_DOMAIN\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PERMIT_TYPEHASH\",\n \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"validation\", \"type\": \"address\" },\n { \"internalType\": \"bytes\", \"name\": \"initdata\", \"type\": \"bytes\" }\n ],\n \"name\": \"addValidation\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"depositToEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"entryPoint\",\n \"outputs\": [\n { \"internalType\": \"contractIEntryPoint\", \"name\": \"\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"dest\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"value\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"data\", \"type\": \"bytes\" }\n ],\n \"name\": \"execFromEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"dest\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"value\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"data\", \"type\": \"bytes\" },\n {\n \"components\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n {\n \"internalType\": \"addresspayable\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"internalType\": \"structUserOperationFee\",\n \"name\": \"feedata\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"execFromEntryPointWithFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"dest\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"value\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"data\", \"type\": \"bytes\" }\n ],\n \"name\": \"execFromModule\",\n \"outputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address[]\", \"name\": \"dest\", \"type\": \"address[]\" },\n { \"internalType\": \"uint256[]\", \"name\": \"value\", \"type\": \"uint256[]\" },\n { \"internalType\": \"bytes[]\", \"name\": \"data\", \"type\": \"bytes[]\" }\n ],\n \"name\": \"executeBatch\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"factory\",\n \"outputs\": [\n {\n \"internalType\": \"contractIFunWalletFactory\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"validation\", \"type\": \"address\" }\n ],\n \"name\": \"getNextValidation\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"uint32\", \"name\": \"key\", \"type\": \"uint32\" }],\n \"name\": \"getNonce\",\n \"outputs\": [\n { \"internalType\": \"uint256\", \"name\": \"out\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"to\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"nonce\", \"type\": \"uint256\" }\n ],\n \"name\": \"getPermitHash\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"key\", \"type\": \"bytes32\" }\n ],\n \"name\": \"getState\",\n \"outputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"key\", \"type\": \"bytes32\" }\n ],\n \"name\": \"getState32\",\n \"outputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"out\", \"type\": \"bytes32\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"key\", \"type\": \"bytes32\" },\n { \"internalType\": \"address\", \"name\": \"addr\", \"type\": \"address\" }\n ],\n \"name\": \"getState32WithAddr\",\n \"outputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"out\", \"type\": \"bytes32\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getValidationCount\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getValidations\",\n \"outputs\": [\n { \"internalType\": \"address[]\", \"name\": \"\", \"type\": \"address[]\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes\", \"name\": \"validationData\", \"type\": \"bytes\" }\n ],\n \"name\": \"initValidations\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contractIEntryPoint\",\n \"name\": \"_newEntryPoint\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"validationInitData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"target\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"value\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"data\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes\", \"name\": \"signature\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes32\", \"name\": \"_hash\", \"type\": \"bytes32\" }\n ],\n \"name\": \"isValidAction\",\n \"outputs\": [\n { \"internalType\": \"uint256\", \"name\": \"out\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"validation\", \"type\": \"address\" }\n ],\n \"name\": \"isValidation\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" },\n { \"internalType\": \"uint256[]\", \"name\": \"\", \"type\": \"uint256[]\" },\n { \"internalType\": \"uint256[]\", \"name\": \"\", \"type\": \"uint256[]\" },\n { \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }\n ],\n \"name\": \"onERC1155BatchReceived\",\n \"outputs\": [{ \"internalType\": \"bytes4\", \"name\": \"\", \"type\": \"bytes4\" }],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }\n ],\n \"name\": \"onERC1155Received\",\n \"outputs\": [{ \"internalType\": \"bytes4\", \"name\": \"\", \"type\": \"bytes4\" }],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }\n ],\n \"name\": \"onERC721Received\",\n \"outputs\": [{ \"internalType\": \"bytes4\", \"name\": \"\", \"type\": \"bytes4\" }],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"uint32\", \"name\": \"\", \"type\": \"uint32\" }],\n \"name\": \"permitNonces\",\n \"outputs\": [{ \"internalType\": \"uint224\", \"name\": \"\", \"type\": \"uint224\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"to\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"nonce\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"sig\", \"type\": \"bytes\" }\n ],\n \"name\": \"permitTransfer\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"prevValidation\",\n \"type\": \"address\"\n },\n { \"internalType\": \"address\", \"name\": \"validation\", \"type\": \"address\" }\n ],\n \"name\": \"removeValidation\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"salt\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"key\", \"type\": \"bytes32\" },\n { \"internalType\": \"bytes\", \"name\": \"val\", \"type\": \"bytes\" }\n ],\n \"name\": \"setState\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"key\", \"type\": \"bytes32\" },\n { \"internalType\": \"bytes32\", \"name\": \"val\", \"type\": \"bytes32\" }\n ],\n \"name\": \"setState32\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes4\", \"name\": \"interfaceId\", \"type\": \"bytes4\" }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }\n ],\n \"name\": \"tokensReceived\",\n \"outputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"dest\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"transferErc20\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contractIEntryPoint\",\n \"name\": \"_newEntryPoint\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"updateEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"prevValidation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"oldValidation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newValidation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"newValidationInitData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"updateValidation\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"upgradeTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n { \"internalType\": \"bytes\", \"name\": \"data\", \"type\": \"bytes\" }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"to\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"nonce\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"sig\", \"type\": \"bytes\" }\n ],\n \"name\": \"validatePermit\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n { \"internalType\": \"address\", \"name\": \"sender\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"nonce\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"initCode\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes\", \"name\": \"callData\", \"type\": \"bytes\" },\n {\n \"internalType\": \"uint256\",\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\"\n },\n { \"internalType\": \"bytes\", \"name\": \"signature\", \"type\": \"bytes\" }\n ],\n \"internalType\": \"structUserOperation\",\n \"name\": \"userOp\",\n \"type\": \"tuple\"\n },\n { \"internalType\": \"bytes32\", \"name\": \"userOpHash\", \"type\": \"bytes32\" },\n {\n \"internalType\": \"uint256\",\n \"name\": \"missingAccountFunds\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"validateUserOp\",\n \"outputs\": [\n { \"internalType\": \"uint256\", \"name\": \"sigTimeRange\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"addresspayable\",\n \"name\": \"withdrawAddress\",\n \"type\": \"address\"\n },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"withdrawFromEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n { \"stateMutability\": \"payable\", \"type\": \"receive\" }\n ],\n \"transactionHash\": \"0x3cb26c07f0cb0d58012d0656fab8f35d7b930a991eb898dcce9e656182884531\",\n \"addresses\": {\n \"1\": \"0xc42F0Eb7FFBAeAce750CEfE83f32c5DBC219681D\",\n \"5\": \"0xc42F0Eb7FFBAeAce750CEfE83f32c5DBC219681D\",\n \"10\": \"0xc42F0Eb7FFBAeAce750CEfE83f32c5DBC219681D\",\n \"137\": \"0xc42F0Eb7FFBAeAce750CEfE83f32c5DBC219681D\",\n \"8453\": \"0xc42F0Eb7FFBAeAce750CEfE83f32c5DBC219681D\",\n \"36865\": \"0xc42F0Eb7FFBAeAce750CEfE83f32c5DBC219681D\",\n \"42161\": \"0xc42F0Eb7FFBAeAce750CEfE83f32c5DBC219681D\",\n \"421614\": \"0x502077DCE504514e3e8f35706525AaC51D6e9852\",\n \"5000\": \"0x645E1F9102d1d5eA60d05d11B5D90Fb8c0c92169\",\n \"534352\": \"0xA6952BaD754D6d959216D89fcA0D695fED01b7b5\"\n }\n}\n", "{\n \"name\": \"FunWalletFactory\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"contractICreate3Deployer\",\n \"name\": \"_deployer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_funWalletImpAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"addresspayable\",\n \"name\": \"_feeOracle\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contractIWalletInit\",\n \"name\": \"_walletInit\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contractIEntryPoint\",\n \"name\": \"_entryPoint\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"funWallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"initializerCallData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"AccountCreated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"feeOracle\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"FeeOracleSet\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"addStakeToEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"initializerCallData\",\n \"type\": \"bytes\"\n },\n { \"internalType\": \"bytes\", \"name\": \"data\", \"type\": \"bytes\" }\n ],\n \"name\": \"createAccount\",\n \"outputs\": [\n {\n \"internalType\": \"contractIFunWallet\",\n \"name\": \"funWallet\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"deployer\",\n \"outputs\": [\n {\n \"internalType\": \"contractICreate3Deployer\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"entryPoint\",\n \"outputs\": [\n { \"internalType\": \"contractIEntryPoint\", \"name\": \"\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"feeOracle\",\n \"outputs\": [\n { \"internalType\": \"addresspayable\", \"name\": \"\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"funWalletImplementation\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes\", \"name\": \"data\", \"type\": \"bytes\" }],\n \"name\": \"getAddress\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getFeeOracle\",\n \"outputs\": [\n { \"internalType\": \"addresspayable\", \"name\": \"\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"moduleId\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"addresspayable\",\n \"name\": \"_feeOracle\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setFeeOracle\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unlockStakeFromEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"salt\", \"type\": \"bytes32\" },\n { \"internalType\": \"address\", \"name\": \"sender\", \"type\": \"address\" }\n ],\n \"name\": \"verifyDeployedFrom\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"walletInit\",\n \"outputs\": [\n { \"internalType\": \"contractIWalletInit\", \"name\": \"\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"addresspayable\",\n \"name\": \"withdrawAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawStakeFromEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"addresses\": {\n \"1\": \"0xBADa4B9bdc249B788A6247e4a8a9158eD0b3e504\",\n \"5\": \"0xBADa4B9bdc249B788A6247e4a8a9158eD0b3e504\",\n \"10\": \"0xBADa4B9bdc249B788A6247e4a8a9158eD0b3e504\",\n \"137\": \"0xBADa4B9bdc249B788A6247e4a8a9158eD0b3e504\",\n \"8453\": \"0xBADa4B9bdc249B788A6247e4a8a9158eD0b3e504\",\n \"36865\": \"0xBADa4B9bdc249B788A6247e4a8a9158eD0b3e504\",\n \"42161\": \"0xBADa4B9bdc249B788A6247e4a8a9158eD0b3e504\",\n \"421614\": \"0x177D6C1Ae1dAb06Ac056EE2A0C89aDE0f723022d\",\n \"5000\": \"0x55CbD830841299a398958bC0a43Be2B31B8CF73D\",\n \"534352\": \"0xa839F61b1f6e19ecD0f0aCFE61Bc14B1A49b8FB9\"\n }\n}\n", "{\n \"name\": \"GaslessPaymaster\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"contractIEntryPoint\",\n \"name\": \"_entryPoint\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sponsor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"AddDepositTo\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"bytes[]\",\n \"name\": \"data\",\n \"type\": \"bytes[]\"\n }\n ],\n \"name\": \"BatchActions\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"locker\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"LockDeposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"contractIEntryPoint\",\n \"name\": \"entryPoint\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"PaymasterCreated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"opHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sponsor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"sponsorCost\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"PostOpGasPaid\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sponsor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"mode\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"SetListMode\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sponsor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"mode\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"SetSpenderBlacklistMode\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sponsor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"mode\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"SetSpenderWhitelistMode\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"locker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"unlockBlockNum\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"UnlockDepositAfter\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sponsor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"WithdrawDepositTo\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"COST_OF_POST\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"acceptOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"addDepositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"unstakeDelaySec\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"addStakeToEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes[]\", \"name\": \"data\", \"type\": \"bytes[]\" }\n ],\n \"name\": \"batchActions\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"entryPoint\",\n \"outputs\": [\n { \"internalType\": \"contractIEntryPoint\", \"name\": \"\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }\n ],\n \"name\": \"getBalance\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }\n ],\n \"name\": \"getListMode\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }\n ],\n \"name\": \"getSpenderBlacklistMode\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }\n ],\n \"name\": \"getSpenderWhitelistMode\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }\n ],\n \"name\": \"getUnlockBlock\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"lockDeposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pendingOwner\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enumIPaymaster.PostOpMode\",\n \"name\": \"mode\",\n \"type\": \"uint8\"\n },\n { \"internalType\": \"bytes\", \"name\": \"context\", \"type\": \"bytes\" },\n {\n \"internalType\": \"uint256\",\n \"name\": \"actualGasCost\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"postOp\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }],\n \"name\": \"setListMode\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"setSpenderBlacklistMode\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"setSpenderWhitelistMode\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"newOwner\", \"type\": \"address\" }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"uint256\", \"name\": \"num\", \"type\": \"uint256\" }\n ],\n \"name\": \"unlockDepositAfter\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unlockStakeFromEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n { \"internalType\": \"address\", \"name\": \"sender\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"nonce\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"initCode\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes\", \"name\": \"callData\", \"type\": \"bytes\" },\n {\n \"internalType\": \"uint256\",\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\"\n },\n { \"internalType\": \"bytes\", \"name\": \"signature\", \"type\": \"bytes\" }\n ],\n \"internalType\": \"structUserOperation\",\n \"name\": \"userOp\",\n \"type\": \"tuple\"\n },\n { \"internalType\": \"bytes32\", \"name\": \"userOpHash\", \"type\": \"bytes32\" },\n { \"internalType\": \"uint256\", \"name\": \"maxCost\", \"type\": \"uint256\" }\n ],\n \"name\": \"validatePaymasterUserOp\",\n \"outputs\": [\n { \"internalType\": \"bytes\", \"name\": \"context\", \"type\": \"bytes\" },\n { \"internalType\": \"uint256\", \"name\": \"sigTimeRange\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"addresspayable\",\n \"name\": \"target\",\n \"type\": \"address\"\n },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"withdrawDepositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"addresspayable\",\n \"name\": \"withdrawAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawStakeFromEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"addresses\": {\n \"1\": \"0x670E428B165350c77AC7523854995486C1796ae3\",\n \"5\": \"0xA6952BaD754D6d959216D89fcA0D695fED01b7b5\",\n \"10\": \"0xA6952BaD754D6d959216D89fcA0D695fED01b7b5\",\n \"137\": \"0xA6952BaD754D6d959216D89fcA0D695fED01b7b5\",\n \"8453\": \"0x70795B38d1d077DA1c255f4d004Df657aEc98915\",\n \"36865\": \"0x670E428B165350c77AC7523854995486C1796ae3\",\n \"42161\": \"0xA0B0c6590f43951d4112092640eFb702d7b15FDD\",\n \"421614\": \"0x3C42EfF85d0DB160c339E8c6Df78C7a4a0A6AC51\",\n \"5000\": \"0xEe628ba7185D54dDcF66D85cad375DC661BEd67B\",\n \"534352\": \"0xC695a41a8E1B2D396B0Ad93a88DeD975e8dBAcC8\"\n }\n}\n", "{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wstETH\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AdminZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalToOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApproveToCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_firstArrayLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_secondArrayLength\",\"type\":\"uint256\"}],\"name\":\"ArraysLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchesAreNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSendValueRecipientMayHaveReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContractVersionIncrement\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_hint\",\"type\":\"uint256\"}],\"name\":\"InvalidHint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"InvalidOwnerAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReportTimestamp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"InvalidRequestId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endId\",\"type\":\"uint256\"}],\"name\":\"InvalidRequestIdRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonZeroContractVersionOnInit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughEther\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"NotOwnerOrApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"NotOwnerOrApprovedForAll\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseUntilMustBeInFuture\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PausedExpected\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"RequestAlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountOfStETH\",\"type\":\"uint256\"}],\"name\":\"RequestAmountTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountOfStETH\",\"type\":\"uint256\"}],\"name\":\"RequestAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestIdsNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"RequestNotFoundOrNotFinalized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResumedExpected\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxExpected\",\"type\":\"uint256\"}],\"name\":\"TooMuchEtherToFinalize\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"realOwner\",\"type\":\"address\"}],\"name\":\"TransferFromIncorrectOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"TransferToNonIERC721Receiver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToThemselves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"received\",\"type\":\"uint256\"}],\"name\":\"UnexpectedContractVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmountOfETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroMetadata\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroPauseDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroShareRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroTimestamp\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"name\":\"BaseURISet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"BunkerModeDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_sinceTimestamp\",\"type\":\"uint256\"}],\"name\":\"BunkerModeEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"ContractVersionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"InitializedV1\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nftDescriptorAddress\",\"type\":\"address\"}],\"name\":\"NftDescriptorAddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Resumed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOfETH\",\"type\":\"uint256\"}],\"name\":\"WithdrawalClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requestor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOfStETH\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOfShares\",\"type\":\"uint256\"}],\"name\":\"WithdrawalRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"from\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"to\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOfETHLocked\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sharesToBurn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"WithdrawalsFinalized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BUNKER_MODE_DISABLED_TIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FINALIZE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGE_TOKEN_URI_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_BATCHES_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_STETH_WITHDRAWAL_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_STETH_WITHDRAWAL_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ORACLE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSE_INFINITELY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESUME_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH\",\"outputs\":[{\"internalType\":\"contractIStETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WSTETH\",\"outputs\":[{\"internalType\":\"contractIWstETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bunkerModeSinceTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxShareRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRequestsPerCall\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"remainingEthBudget\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"finished\",\"type\":\"bool\"},{\"internalType\":\"uint256[36]\",\"name\":\"batches\",\"type\":\"uint256[36]\"},{\"internalType\":\"uint256\",\"name\":\"batchesLength\",\"type\":\"uint256\"}],\"internalType\":\"structWithdrawalQueueBase.BatchesCalculationState\",\"name\":\"_state\",\"type\":\"tuple\"}],\"name\":\"calculateFinalizationBatches\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"remainingEthBudget\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"finished\",\"type\":\"bool\"},{\"internalType\":\"uint256[36]\",\"name\":\"batches\",\"type\":\"uint256[36]\"},{\"internalType\":\"uint256\",\"name\":\"batchesLength\",\"type\":\"uint256\"}],\"internalType\":\"structWithdrawalQueueBase.BatchesCalculationState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"claimWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_requestIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_hints\",\"type\":\"uint256[]\"}],\"name\":\"claimWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_requestIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_hints\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"claimWithdrawalsTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_lastRequestIdToBeFinalized\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxShareRate\",\"type\":\"uint256\"}],\"name\":\"finalize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_requestIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"_firstIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_lastIndex\",\"type\":\"uint256\"}],\"name\":\"findCheckpointHints\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"hintIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_requestIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_hints\",\"type\":\"uint256[]\"}],\"name\":\"getClaimableEther\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"claimableEthValues\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getContractVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastCheckpointIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastFinalizedRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLockedEtherAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNFTDescriptorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getResumeSinceTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"getWithdrawalRequests\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"requestsIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_requestIds\",\"type\":\"uint256[]\"}],\"name\":\"getWithdrawalStatus\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountOfStETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOfShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isFinalized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isClaimed\",\"type\":\"bool\"}],\"internalType\":\"structWithdrawalQueueBase.WithdrawalRequestStatus[]\",\"name\":\"statuses\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBunkerModeActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isBunkerModeNow\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_bunkerStartTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentReportTimestamp\",\"type\":\"uint256\"}],\"name\":\"onOracleReport\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"pauseFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pauseUntilInclusive\",\"type\":\"uint256\"}],\"name\":\"pauseUntil\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_batches\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"_maxShareRate\",\"type\":\"uint256\"}],\"name\":\"prefinalize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ethToLock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sharesToBurn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"requestWithdrawals\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"requestIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"components\":[{\"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\"}],\"internalType\":\"structWithdrawalQueue.PermitInput\",\"name\":\"_permit\",\"type\":\"tuple\"}],\"name\":\"requestWithdrawalsWithPermit\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"requestIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"requestWithdrawalsWstETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"requestIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"components\":[{\"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\"}],\"internalType\":\"structWithdrawalQueue.PermitInput\",\"name\":\"_permit\",\"type\":\"tuple\"}],\"name\":\"requestWithdrawalsWstETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"requestIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resume\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"setBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_nftDescriptorAddress\",\"type\":\"address\"}],\"name\":\"setNFTDescriptorAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unfinalizedRequestNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unfinalizedStETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]}", "{\n \"name\": \"RoleBasedAccessControl\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddTargetWildcard\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RemoveTargetWildcard\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleBasedAccessControlInitialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"user\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"ruleId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RuleAdded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"ruleId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RuleAddedToRole\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"ruleId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RuleDeleted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"user\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"ruleId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RuleRemoved\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"ruleId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RuleRemovedFromRole\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"ruleId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"actionValueLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"targetSelectorMerkleRootHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"feeValueLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"feeRecipientTokenMerkleRootHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"structRule\",\n \"name\": \"rule\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"RuleSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"userId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UserAddedToRole\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"userId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UserRemovedFromRole\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"INIT_HASH\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"TARGET_WILDCARD_RULE_ID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WILDCARD_RULE_ID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"ownerId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"addOwner\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"ruleId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"addRuleToRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"addTargetWildcard\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"userId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"addUserToRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"nonce\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"initCode\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"callData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"structUserOperation\",\n \"name\": \"userOp\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"authenticateUserOp\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"sigTimeRange\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"ruleId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"deleteRule\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"ruleId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRule\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"actionValueLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"targetSelectorMerkleRootHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"feeValueLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"feeRecipientTokenMerkleRootHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"structRule\",\n \"name\": \"rule\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getState\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"state\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"key\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getState32\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"state\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"initData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"init\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_signature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"isValidAction\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"sigTimeRange\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_signature\",\n \"type\": \"bytes\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"addresspayable\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"structUserOperationFee\",\n \"name\": \"feedata\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"isValidActionAndFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"moduleId\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"calls\",\n \"type\": \"bytes[]\"\n }\n ],\n \"name\": \"multiCall\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"ownerId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"removeOwner\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"ruleId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"removeRuleFromRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"removeTargetWildcard\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"roleId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"userId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"removeUserFromRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"ruleId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"actionValueLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"targetSelectorMerkleRootHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"feeValueLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"feeRecipientTokenMerkleRootHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"structRule\",\n \"name\": \"rule\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"setRule\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"addresses\": {\n \"1\": \"0x996eAcBd74D94C77bD6edA46dAbF99608dBb336E\",\n \"5\": \"0x996eAcBd74D94C77bD6edA46dAbF99608dBb336E\",\n \"10\": \"0x996eAcBd74D94C77bD6edA46dAbF99608dBb336E\",\n \"137\": \"0x996eAcBd74D94C77bD6edA46dAbF99608dBb336E\",\n \"8453\": \"0x996eAcBd74D94C77bD6edA46dAbF99608dBb336E\",\n \"36865\": \"0x996eAcBd74D94C77bD6edA46dAbF99608dBb336E\",\n \"42161\": \"0x996eAcBd74D94C77bD6edA46dAbF99608dBb336E\",\n \"421614\": \"0x9d79D300b29d5D5eE800E914f002A385B954b8d5\",\n \"5000\": \"0x939C13FE360eD2e48f1DC074BB3DFE0d042d40c9\",\n \"534352\": \"0xFC69761Cb48310eB003298Ef66d13c9F68fdE787\"\n }\n}\n", "{\n \"name\": \"TestNFT\",\n \"abi\": [\n { \"inputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"constructor\" },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"approved\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"ApprovalForAll\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"to\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"tokenId\", \"type\": \"uint256\" }\n ],\n \"name\": \"approve\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"uint256\", \"name\": \"tokenId\", \"type\": \"uint256\" }\n ],\n \"name\": \"getApproved\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"operator\", \"type\": \"address\" }\n ],\n \"name\": \"isApprovedForAll\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"to\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"tokenId\", \"type\": \"uint256\" }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"uint256\", \"name\": \"tokenId\", \"type\": \"uint256\" }\n ],\n \"name\": \"ownerOf\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"from\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"to\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"tokenId\", \"type\": \"uint256\" }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"from\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"to\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"tokenId\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"data\", \"type\": \"bytes\" }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"operator\", \"type\": \"address\" },\n { \"internalType\": \"bool\", \"name\": \"approved\", \"type\": \"bool\" }\n ],\n \"name\": \"setApprovalForAll\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes4\", \"name\": \"interfaceId\", \"type\": \"bytes4\" }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"uint256\", \"name\": \"tokenId\", \"type\": \"uint256\" }\n ],\n \"name\": \"tokenURI\",\n \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"from\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"to\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"tokenId\", \"type\": \"uint256\" }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"addresses\": {\n \"1\": \"0x25E07d90a4e2e9fb627FcF5f4FAd5165dDA6d592\",\n \"5\": \"0x25E07d90a4e2e9fb627FcF5f4FAd5165dDA6d592\",\n \"10\": \"0x25E07d90a4e2e9fb627FcF5f4FAd5165dDA6d592\",\n \"137\": \"0x25E07d90a4e2e9fb627FcF5f4FAd5165dDA6d592\",\n \"8453\": \"0x25E07d90a4e2e9fb627FcF5f4FAd5165dDA6d592\",\n \"36865\": \"0x25E07d90a4e2e9fb627FcF5f4FAd5165dDA6d592\",\n \"42161\": \"0x25E07d90a4e2e9fb627FcF5f4FAd5165dDA6d592\",\n \"421614\": \"0x837bF17d01aF15A9EA8BA76ccfd59B7F562CA590\",\n \"5000\": \"0xA025B11cf8CCA0a330bD409B3cE3d355C9f3916a\",\n \"534352\": \"0xA0B0c6590f43951d4112092640eFb702d7b15FDD\"\n }\n}\n", "{\n \"name\": \"TokenPaymaster\",\n \"abi\": [\n {\n \"inputs\": [\n { \"internalType\": \"contractIEntryPoint\", \"name\": \"_entryPoint\", \"type\": \"address\" },\n { \"internalType\": \"contractIImplementationRegistry\", \"name\": \"_implementationRegistry\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"caller\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" },\n { \"indexed\": false, \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"AddEthDepositTo\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"recipient\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"indexed\": false, \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"AddTokenDepositTo\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address[]\", \"name\": \"tokens\", \"type\": \"address[]\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }\n ],\n \"name\": \"AddTokens\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [{ \"indexed\": false, \"internalType\": \"bytes[]\", \"name\": \"data\", \"type\": \"bytes[]\" }],\n \"name\": \"BatchActions\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }\n ],\n \"name\": \"LockTokenDeposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"previousOwner\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"newOwner\", \"type\": \"address\" }\n ],\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"previousOwner\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"newOwner\", \"type\": \"address\" }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [{ \"indexed\": false, \"internalType\": \"contractIEntryPoint\", \"name\": \"entryPoint\", \"type\": \"address\" }],\n \"name\": \"PaymasterCreated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"bytes32\", \"name\": \"opHash\", \"type\": \"bytes32\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" },\n { \"indexed\": false, \"internalType\": \"uint256\", \"name\": \"spenderCost\", \"type\": \"uint256\" },\n { \"indexed\": false, \"internalType\": \"uint256\", \"name\": \"sponsorCost\", \"type\": \"uint256\" }\n ],\n \"name\": \"PostOpGasPaid\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": false, \"internalType\": \"bytes\", \"name\": \"context\", \"type\": \"bytes\" },\n { \"indexed\": false, \"internalType\": \"uint256\", \"name\": \"actualGasCost\", \"type\": \"uint256\" }\n ],\n \"name\": \"PostOpReverted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [{ \"indexed\": true, \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" }],\n \"name\": \"RemoveTokenData\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address[]\", \"name\": \"tokens\", \"type\": \"address[]\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }\n ],\n \"name\": \"RemoveTokens\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" },\n { \"indexed\": false, \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"SetListMode\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" },\n { \"indexed\": false, \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"SetSpenderBlacklistMode\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" },\n { \"indexed\": false, \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"SetSpenderWhitelistMode\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" },\n { \"indexed\": false, \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"SetTokenBlacklistMode\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"components\": [\n { \"internalType\": \"contractITokenPriceOracle\", \"name\": \"oracle\", \"type\": \"address\" },\n { \"internalType\": \"contractIERC20\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"uint8\", \"name\": \"decimals\", \"type\": \"uint8\" },\n { \"internalType\": \"address\", \"name\": \"aggregator\", \"type\": \"address\" }\n ],\n \"indexed\": true,\n \"internalType\": \"structTokenData\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"SetTokenData\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" },\n { \"indexed\": false, \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"SetTokenListMode\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" },\n { \"indexed\": false, \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"SetTokenWhitelistMode\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"uint256\", \"name\": \"unlockBlockNum\", \"type\": \"uint256\" }\n ],\n \"name\": \"UnlockTokenDepositAfter\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"caller\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"target\", \"type\": \"address\" },\n { \"indexed\": false, \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"WithdrawEthDepositTo\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"recipient\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"target\", \"type\": \"address\" },\n { \"indexed\": false, \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"WithdrawTokenDepositTo\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"COST_OF_SIG\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"COST_OF_TRANSFER\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"ETH\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n { \"inputs\": [], \"name\": \"acceptOwnership\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" },\n {\n \"inputs\": [],\n \"name\": \"accumulatedEthDust\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"addEthDepositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"uint32\", \"name\": \"unstakeDelaySec\", \"type\": \"uint32\" }],\n \"name\": \"addStakeToEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"addTokenDepositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address[]\", \"name\": \"_tokens\", \"type\": \"address[]\" }],\n \"name\": \"addTokens\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes[]\", \"name\": \"data\", \"type\": \"bytes[]\" }],\n \"name\": \"batchActions\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"entryPoint\",\n \"outputs\": [{ \"internalType\": \"contractIEntryPoint\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }\n ],\n \"name\": \"getAllTokenData\",\n \"outputs\": [\n { \"internalType\": \"uint256\", \"name\": \"unlockBlock\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"tokenAmount\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getAllTokens\",\n \"outputs\": [{ \"internalType\": \"address[]\", \"name\": \"\", \"type\": \"address[]\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"_token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"tokenAmount\", \"type\": \"uint256\" }\n ],\n \"name\": \"getCanPayThroughApproval\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"contractIERC20\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"tokenAmount\", \"type\": \"uint256\" }\n ],\n \"name\": \"getHasBalance\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }],\n \"name\": \"getListMode\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }\n ],\n \"name\": \"getSpenderBlacklisted\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }\n ],\n \"name\": \"getSpenderWhitelisted\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }\n ],\n \"name\": \"getSponsorTokenUsage\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" }],\n \"name\": \"getToken\",\n \"outputs\": [\n {\n \"components\": [\n { \"internalType\": \"contractITokenPriceOracle\", \"name\": \"oracle\", \"type\": \"address\" },\n { \"internalType\": \"contractIERC20\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"uint8\", \"name\": \"decimals\", \"type\": \"uint8\" },\n { \"internalType\": \"address\", \"name\": \"aggregator\", \"type\": \"address\" }\n ],\n \"internalType\": \"structTokenData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }\n ],\n \"name\": \"getTokenBalance\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"tokenAmount\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }\n ],\n \"name\": \"getTokenBlacklisted\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }],\n \"name\": \"getTokenListMode\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"_token\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"ethBought\", \"type\": \"uint256\" }\n ],\n \"name\": \"getTokenValueOfEth\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"sponsor\", \"type\": \"address\" }\n ],\n \"name\": \"getTokenWhitelisted\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }\n ],\n \"name\": \"getUnlockBlock\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"unlockBlock\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"implementationRegistry\",\n \"outputs\": [{ \"internalType\": \"contractIImplementationRegistry\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" }],\n \"name\": \"lockTokenDeposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pendingOwner\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"enumIPaymaster.PostOpMode\", \"name\": \"mode\", \"type\": \"uint8\" },\n { \"internalType\": \"bytes\", \"name\": \"context\", \"type\": \"bytes\" },\n { \"internalType\": \"uint256\", \"name\": \"actualGasCost\", \"type\": \"uint256\" }\n ],\n \"name\": \"postOp\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"tokenAddress\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"tokenListIndex\", \"type\": \"uint256\" }\n ],\n \"name\": \"removeTokenData\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address[]\", \"name\": \"_tokens\", \"type\": \"address[]\" }],\n \"name\": \"removeTokens\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n { \"inputs\": [], \"name\": \"renounceOwnership\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" },\n {\n \"inputs\": [{ \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }],\n \"name\": \"setListMode\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"setSpenderBlacklistMode\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" },\n { \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"setSpenderWhitelistMode\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"setTokenBlacklistMode\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n { \"internalType\": \"contractITokenPriceOracle\", \"name\": \"oracle\", \"type\": \"address\" },\n { \"internalType\": \"contractIERC20\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"uint8\", \"name\": \"decimals\", \"type\": \"uint8\" },\n { \"internalType\": \"address\", \"name\": \"aggregator\", \"type\": \"address\" }\n ],\n \"internalType\": \"structTokenData\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"setTokenData\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }],\n \"name\": \"setTokenListMode\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"bool\", \"name\": \"mode\", \"type\": \"bool\" }\n ],\n \"name\": \"setTokenWhitelistMode\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"name\": \"tokens\",\n \"outputs\": [\n { \"internalType\": \"contractITokenPriceOracle\", \"name\": \"oracle\", \"type\": \"address\" },\n { \"internalType\": \"contractIERC20\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"uint8\", \"name\": \"decimals\", \"type\": \"uint8\" },\n { \"internalType\": \"address\", \"name\": \"aggregator\", \"type\": \"address\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"newOwner\", \"type\": \"address\" }],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n { \"inputs\": [], \"name\": \"unlockStakeFromEntryPoint\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"num\", \"type\": \"uint256\" }\n ],\n \"name\": \"unlockTokenDepositAfter\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n { \"internalType\": \"address\", \"name\": \"sender\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"nonce\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"initCode\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes\", \"name\": \"callData\", \"type\": \"bytes\" },\n { \"internalType\": \"uint256\", \"name\": \"callGasLimit\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"verificationGasLimit\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"preVerificationGas\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"maxFeePerGas\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"maxPriorityFeePerGas\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"paymasterAndData\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes\", \"name\": \"signature\", \"type\": \"bytes\" }\n ],\n \"internalType\": \"structUserOperation\",\n \"name\": \"userOp\",\n \"type\": \"tuple\"\n },\n { \"internalType\": \"bytes32\", \"name\": \"userOpHash\", \"type\": \"bytes32\" },\n { \"internalType\": \"uint256\", \"name\": \"maxCost\", \"type\": \"uint256\" }\n ],\n \"name\": \"validatePaymasterUserOp\",\n \"outputs\": [\n { \"internalType\": \"bytes\", \"name\": \"context\", \"type\": \"bytes\" },\n { \"internalType\": \"uint256\", \"name\": \"sigTimeRange\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"addresspayable\", \"name\": \"target\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"withdrawEthDepositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n { \"inputs\": [], \"name\": \"withdrawEthDust\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" },\n {\n \"inputs\": [{ \"internalType\": \"addresspayable\", \"name\": \"withdrawAddress\", \"type\": \"address\" }],\n \"name\": \"withdrawStakeFromEntryPoint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"target\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }\n ],\n \"name\": \"withdrawTokenDepositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n }\n ],\n \"addresses\": {\n \"1\": \"0x6C5c2c8776Ecc5943760C68a200eC7e3650eFC2F\",\n \"5\": \"0x2b098A9B293EE50a1362D0500A5dC519E2E34d35\",\n \"10\": \"0x4Aabd0420D4ae964f065F9feb2fa0b04A8D65eAF\",\n \"137\": \"0x81051ac27b665B3c28bD7398DbA111E760f1DE4c\",\n \"8453\": \"0x31A2E8D96d96735daC5Af28A2073e6aEaF76BDe3\",\n \"36865\": \"0x6C5c2c8776Ecc5943760C68a200eC7e3650eFC2F\",\n \"42161\": \"0x2AF4CEc1525Fc62a0D4d91c4c1872dF5FB09c963\",\n \"421614\": \"0x019d2CDaa0871F4aE32d3E1419F0eAFb2A3771DC\"\n }\n}\n", "{\n \"name\": \"TokenPriceOracle\",\n \"abi\": [\n {\n \"inputs\": [],\n \"name\": \"MAX_DELAY\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WEI_IN_ETH\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"aggregatorOrToken\",\n \"type\": \"address\"\n },\n { \"internalType\": \"uint256\", \"name\": \"ethAmount\", \"type\": \"uint256\" },\n { \"internalType\": \"uint8\", \"name\": \"tokenDecimals\", \"type\": \"uint8\" }\n ],\n \"name\": \"getTokenValueOfEth\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenValueOfEth\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"oracleValidUntil\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"addresses\": {\n \"1\": \"0x302275dcF9919c5449F2d53253ACD06315385272\",\n \"5\": \"0x302275dcF9919c5449F2d53253ACD06315385272\",\n \"10\": \"0x302275dcF9919c5449F2d53253ACD06315385272\",\n \"137\": \"0x302275dcF9919c5449F2d53253ACD06315385272\",\n \"8453\": \"0x302275dcF9919c5449F2d53253ACD06315385272\",\n \"36865\": \"0x302275dcF9919c5449F2d53253ACD06315385272\",\n \"42161\": \"0x302275dcF9919c5449F2d53253ACD06315385272\",\n \"421614\": \"0x33CE83528023d9aee4e6321250514741F00976DB\",\n \"5000\": \"0x46B1Aee819Af33fa9617059A3D54e5352793473B\",\n \"534352\": \"0x3053451A384524C57dAF9420f8d8b8464555E1e8\"\n }\n}\n", "{\"name\":\"UniswapV2Factory\",\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"INIT_CODE_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeTo\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"addresses\":{\"5\":\"0x3000611369Ae8A009C8CB0e4011C765FdFB35802\",\"31337\":\"0x3489745eff9525CCC3d8c648102FE2cf3485e228\",\"36865\":\"0xF8c6B9d738D2E324bDe51760b798Bfa93dd077B3\",\"84531\":\"0x6d9888900b96a019982AC3CcF1A639a024851196\"}}", "{\"name\":\"UniswapV2Router02\",\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"addresses\":{\"5\":\"0x5D581A65D141A18BAc677bdf566390f8E99EDa9D\",\"36865\":\"0x6488FA4B83343041E7712434F26d157Cc3310E4d\"}}", "{\"name\":\"UniswapV3LimitOrder\",\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_quoter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"EMPTY_STATE\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"getState\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"state\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moduleId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"payFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quoter\",\"outputs\":[{\"internalType\":\"contractIQuoterV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"contractISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"validate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"addresses\":{\"1\":\"0x973e8345610829b4B7a9C7B10dCef8a4A728bA39\",\"5\":\"0x973e8345610829b4B7a9C7B10dCef8a4A728bA39\",\"10\":\"0x973e8345610829b4B7a9C7B10dCef8a4A728bA39\",\"137\":\"0x973e8345610829b4B7a9C7B10dCef8a4A728bA39\",\"8453\":\"0x973e8345610829b4B7a9C7B10dCef8a4A728bA39\",\"36865\":\"0x973e8345610829b4B7a9C7B10dCef8a4A728bA39\",\"42161\":\"0x973e8345610829b4B7a9C7B10dCef8a4A728bA39\"}}\n", "{\"name\":\"univ3factory\",\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"FeeAmountEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"enableFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"name\":\"feeAmountTickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parameters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"addresses\":{\"1\":\"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\"5\":\"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\"10\":\"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\"137\":\"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\"8453\":\"0x33128a8fC17869897dcE68Ed026d694621f6FDfD\",\"36865\":\"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\"42161\":\"0x1F98431c8aD98523631AE4a59f267346ea31F984\", \"421614\":\"0x1F98431c8aD98523631AE4a59f267346ea31F984\"}}\n", "{\"name\":\"univ3quoter\",\"abi\":[],\"addresses\":{\"1\": \"0x61fFE014bA17989E743c5F6cB21bF9697530B21e\",\"5\":\"0x61fFE014bA17989E743c5F6cB21bF9697530B21e\",\"10\":\"0x61fFE014bA17989E743c5F6cB21bF9697530B21e\",\"137\":\"0x61fFE014bA17989E743c5F6cB21bF9697530B21e\",\"8453\":\"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a\",\"36865\":\"0x61fFE014bA17989E743c5F6cB21bF9697530B21e\",\"42161\":\"0x61fFE014bA17989E743c5F6cB21bF9697530B21e\"}}", "{\"name\":\"univ3router\",\"abi\":[],\"addresses\":{\"1\":\"0xE592427A0AEce92De3Edee1F18E0157C05861564\",\"5\":\"0xc104A3e2CDC1c29a2a284C515d4e10102D2e39cE\",\"10\":\"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\"137\":\"0xE592427A0AEce92De3Edee1F18E0157C05861564\",\"8453\":\"0x2626664c2603336E57B271c5C0b26F421741e481\",\"36865\":\"0xE592427A0AEce92De3Edee1F18E0157C05861564\",\"42161\":\"0xE592427A0AEce92De3Edee1F18E0157C05861564\", \"421614\":\"0xE592427A0AEce92De3Edee1F18E0157C05861564\"}}\n", "{\n \"name\": \"UserAuthentication\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"groupId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"userIds\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"threshold\",\n \"type\": \"uint256\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"structMultiSigGroup\",\n \"name\": \"group\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"MultiSigGroupCreated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"groupId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"MultiSigGroupDeleted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"groupId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"userIds\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"threshold\",\n \"type\": \"uint256\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"structMultiSigGroup\",\n \"name\": \"group\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"MultiSigGroupUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"multiSigInitData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"UserAuthenticationInitialized\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"ADMIN_ROLE\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"INIT_HASH\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n { \"internalType\": \"address\", \"name\": \"sender\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"nonce\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"initCode\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes\", \"name\": \"callData\", \"type\": \"bytes\" },\n {\n \"internalType\": \"uint256\",\n \"name\": \"callGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"verificationGasLimit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"preVerificationGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxPriorityFeePerGas\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"paymasterAndData\",\n \"type\": \"bytes\"\n },\n { \"internalType\": \"bytes\", \"name\": \"signature\", \"type\": \"bytes\" }\n ],\n \"internalType\": \"structUserOperation\",\n \"name\": \"userOp\",\n \"type\": \"tuple\"\n },\n { \"internalType\": \"bytes32\", \"name\": \"userOpHash\", \"type\": \"bytes32\" },\n { \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }\n ],\n \"name\": \"authenticateUserOp\",\n \"outputs\": [\n { \"internalType\": \"uint256\", \"name\": \"sigTimeRange\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"groupId\", \"type\": \"bytes32\" },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"userIds\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"threshold\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"structMultiSigGroup\",\n \"name\": \"group\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"createMultiSigGroup\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"groupId\", \"type\": \"bytes32\" }\n ],\n \"name\": \"deleteMultiSigGroup\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"key\", \"type\": \"bytes32\" }\n ],\n \"name\": \"getState\",\n \"outputs\": [\n { \"internalType\": \"bytes\", \"name\": \"state\", \"type\": \"bytes\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"key\", \"type\": \"bytes32\" }\n ],\n \"name\": \"getState32\",\n \"outputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"state\", \"type\": \"bytes32\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes\", \"name\": \"multiSigInitData\", \"type\": \"bytes\" }\n ],\n \"name\": \"init\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" },\n { \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes\", \"name\": \"_signature\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes32\", \"name\": \"_hash\", \"type\": \"bytes32\" }\n ],\n \"name\": \"isValidAction\",\n \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"moduleId\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes[]\", \"name\": \"calls\", \"type\": \"bytes[]\" }\n ],\n \"name\": \"multiCall\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes\", \"name\": \"signature\", \"type\": \"bytes\" },\n { \"internalType\": \"bytes32\", \"name\": \"userOpHash\", \"type\": \"bytes32\" },\n { \"internalType\": \"bytes32\", \"name\": \"userId\", \"type\": \"bytes32\" }\n ],\n \"name\": \"subValidateSignatureECDSA\",\n \"outputs\": [\n { \"internalType\": \"uint256\", \"name\": \"sigTimeRange\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"groupId\", \"type\": \"bytes32\" },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"userIds\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"threshold\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"structMultiSigGroup\",\n \"name\": \"group\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"updateMultiSigGroup\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"addresses\": {\n \"1\": \"0xb3DeA1dd1d9aC323041850c0A15C578C883F3f6F\",\n \"5\": \"0xb3DeA1dd1d9aC323041850c0A15C578C883F3f6F\",\n \"10\": \"0xb3DeA1dd1d9aC323041850c0A15C578C883F3f6F\",\n \"137\": \"0xb3DeA1dd1d9aC323041850c0A15C578C883F3f6F\",\n \"8453\": \"0xb3DeA1dd1d9aC323041850c0A15C578C883F3f6F\",\n \"36865\": \"0xb3DeA1dd1d9aC323041850c0A15C578C883F3f6F\",\n \"42161\": \"0xb3DeA1dd1d9aC323041850c0A15C578C883F3f6F\",\n \"421614\": \"0x81C464389b2ac51D39aD934732bd172c4126773b\",\n \"5000\": \"0x73dBAFFa2B1E93D4c824B70DE8CA8926b9F18339\",\n \"534352\": \"0xe6e015a9C1A06D348A94e964dA27CdC34CaF36E6\"\n }\n}\n", "import { Address, encodeFunctionData, Hex, PublicClient } from 'viem'\n\nimport { TransactionParams } from '../common'\nimport { Chain } from '../data'\nimport { stringify } from '../utils'\n\ntype ChainReadCall = {\n functionName: string\n args?: any[]\n}\n\nexport class ContractInterface {\n abi: any\n constructor(abi: any) {\n this.abi = abi\n }\n\n async readFromChain(\n address: Address,\n functionName: string,\n args: any[],\n chainOrClient: Chain | PublicClient,\n ): Promise<any> {\n const client = await parseClient(chainOrClient)\n try {\n return await client.readContract({\n abi: this.abi,\n address,\n functionName,\n args,\n })\n } catch (e) {\n throw new Error(\n `Error reading from chain: \\n ${stringify(e)}. Info: ${stringify({\n address,\n functionName,\n args,\n chainOrClient,\n client,\n })}`,\n )\n }\n }\n\n async batchReadFromChain(\n address: Address,\n chainOrClient: Chain | PublicClient,\n calls: ChainReadCall[],\n ): Promise<any[]> {\n const client = await parseClient(chainOrClient)\n return await Promise.all(\n calls.map(async (call) => {\n return this.readFromChain(\n address,\n call.functionName,\n call.args ? call.args : [],\n client,\n )\n }),\n )\n }\n\n encodeTransactionParams(\n address: Address,\n functionName: string,\n args: any[],\n value = 0n,\n ): TransactionParams {\n const data = encodeFunctionData({\n abi: this.abi,\n functionName,\n args,\n })\n return { to: address, data, value }\n }\n\n encodeData(functionName: string, args: any[]): Hex {\n return encodeFunctionData({\n abi: this.abi,\n functionName,\n args,\n })\n }\n\n async createFilter(\n address: Address,\n eventName: any,\n args: any,\n chainOrClient: PublicClient | Chain,\n fromBlock: bigint,\n ) {\n const client = await parseClient(chainOrClient)\n return await client.createContractEventFilter({\n abi: this.abi,\n address,\n eventName,\n args,\n fromBlock,\n })\n }\n\n async getLog(\n address: Address,\n name: string,\n args: any,\n chainOrClient: PublicClient | Chain,\n fromBlock: bigint,\n ): Promise<any[]> {\n const client = await parseClient(chainOrClient)\n const event = getItemFromAbi(this.abi, name, 'event')\n return await client.getLogs({\n address,\n event,\n args,\n fromBlock,\n })\n }\n}\n\nexport const parseClient = async (\n chainOrClient: PublicClient | Chain,\n): Promise<PublicClient> => {\n if (chainOrClient instanceof Chain) {\n const chain = chainOrClient as Chain\n return await chain.getClient()\n } else if (typeof chainOrClient.readContract === 'function') {\n return chainOrClient as PublicClient\n } else {\n throw new Error('No client or chain provided')\n }\n}\n\nconst getItemFromAbi = (abi: any, name: string, type: string): any => {\n const item = abi.find((item: any) => item.name === name && item.type === type)\n if (!item) {\n throw new Error(`No ${type} with name ${name} found in abi`)\n }\n return item\n}\n", "import { Address, createPublicClient, Hex, http, PublicClient } from 'viem'\n\nimport {\n estimateOp,\n getChainFromId,\n getChainFromName,\n getGasPrice,\n getModuleInfo,\n UserOperationGasPrice,\n} from '../apis'\nimport {\n BASE_PIMLICO_PAYMASTER_AND_DATA_ESTIMATION,\n CONTRACT_ADDRESSES,\n ENTRYPOINT_CONTRACT_INTERFACE,\n EstimateGasResult,\n ETHEREUM_PIMLICO_PAYMASTER_AND_DATA_ESTIMATION,\n OPTIMISM_PIMLICO_PAYMASTER_AND_DATA_ESTIMATION,\n} from '../common'\nimport {\n ErrorCode,\n InternalFailureError,\n InvalidParameterError,\n ResourceNotFoundError,\n} from '../errors'\nimport { isContract } from '../utils'\nimport { Addresses, ChainInput, UserOperation } from './types'\n\nexport class Chain {\n private initialized = false\n private id?: string\n private name?: string\n private addresses: Addresses = {}\n private currency?: string\n private rpcUrl?: string\n private client?: PublicClient\n\n private static chain: Chain\n\n private constructor(chainInput: ChainInput) {\n if (!chainInput.chainIdentifier && !chainInput.rpcUrl) {\n throw new InvalidParameterError(\n ErrorCode.InvalidChainIdentifier,\n 'valid chain identifier or rpcUrl is required, could be chainId, chainName, Fun Chain object, or rpcUrl',\n { chainInput },\n 'Please provide valid chain identifier or rpcUrl',\n 'https://docs.fun.xyz',\n )\n }\n\n if (chainInput.rpcUrl) {\n this.rpcUrl = chainInput.rpcUrl\n } else if (chainInput.chainIdentifier instanceof Chain) {\n return chainInput.chainIdentifier\n } else if (\n typeof chainInput.chainIdentifier === 'number' ||\n Number(chainInput.chainIdentifier)\n ) {\n this.id = chainInput.chainIdentifier!.toString()\n } else {\n this.name = chainInput.chainIdentifier\n }\n }\n\n public static async getChain(chainInput: ChainInput): Promise<Chain> {\n if (chainInput.chainIdentifier instanceof Chain) {\n return chainInput.chainIdentifier\n } else if (\n !Chain.chain ||\n ((await Chain.chain.getChainId()) !==\n chainInput.chainIdentifier?.toString() &&\n (await Chain.chain.getChainName()) !==\n chainInput.chainIdentifier?.toString() &&\n (await Chain.chain.getRpcUrl()) !== chainInput.rpcUrl)\n ) {\n if (typeof chainInput.chainIdentifier === 'string') {\n chainInput.chainIdentifier = chainInput.chainIdentifier.replace(\n /\\s/g,\n '',\n )\n }\n if (chainInput.chainIdentifier === 'ethereum-goerli') {\n chainInput.chainIdentifier = 'goerli'\n }\n if (chainInput.chainIdentifier === 'polygon') {\n chainInput.chainIdentifier = 'polygon-mainnet'\n }\n\n Chain.chain = new Chain(chainInput)\n }\n return Chain.chain\n }\n\n private async init() {\n if (this.initialized) return\n\n if (this.id) {\n await this.loadChain(this.id)\n } else if (this.name) {\n await this.loadChain(this.name)\n } else if (this.rpcUrl) {\n await this.loadChainFromRpc()\n }\n\n this.initialized = true\n }\n\n private async loadChainFromRpc() {\n this.client = createPublicClient({\n transport: http(this.rpcUrl),\n })\n this.id = (await this.client.getChainId()).toString()\n await this.loadChain(this.id!)\n }\n\n private async loadChain(identifier: string) {\n let chain\n if (!Number(identifier)) {\n chain = await getChainFromName(identifier)\n } else {\n chain = await getChainFromId(identifier)\n }\n this.id = chain.id\n this.name = chain.name\n this.currency = chain.nativeCurrency.symbol\n const abisAddresses = Object.keys(CONTRACT_ADDRESSES).reduce(\n (result, key) => {\n result[key] = CONTRACT_ADDRESSES[key][this.id]\n return result\n },\n {},\n )\n const addresses = { ...abisAddresses }\n this.rpcUrl = chain.rpcUrls.default\n this.client = createPublicClient({\n transport: http(this.rpcUrl),\n })\n Object.assign(this, { ...this, addresses })\n }\n\n async getChainId(): Promise<string> {\n await this.init()\n return this.id!\n }\n\n async getChainName(): Promise<string> {\n await this.init()\n return this.name!\n }\n\n async getRpcUrl(): Promise<string> {\n await this.init()\n return this.rpcUrl!\n }\n\n async getAddress(name: string): Promise<Address> {\n await this.init()\n const res = this.addresses![name]\n if (!res) {\n throw new ResourceNotFoundError(\n ErrorCode.AddressNotFound,\n 'address not found',\n { name },\n 'Provide correct name to query address',\n 'https://docs.fun.xyz',\n )\n }\n return res\n }\n\n async getModuleAddresses(name: string): Promise<string[]> {\n await this.init()\n return await getModuleInfo(name, this.id!)\n }\n\n async getCurrency(): Promise<string> {\n await this.init()\n return this.currency!\n }\n\n async getClient(): Promise<PublicClient> {\n await this.init()\n return this.client!\n }\n\n async getFeeData(): Promise<UserOperationGasPrice> {\n await this.init()\n let result\n try {\n result = await getGasPrice(this.id!)\n } catch (err: any) {\n const fallBackGasPrice = await this.client!.getGasPrice()\n result = {\n maxFeePerGas: fallBackGasPrice,\n maxPriorityFeePerGas: fallBackGasPrice,\n }\n }\n return result\n }\n\n async estimateOpGas(partialOp: UserOperation): Promise<EstimateGasResult> {\n await this.init()\n if (!this.addresses || !this.addresses.entryPointAddress) {\n throw new InternalFailureError(\n ErrorCode.AddressNotFound,\n 'entryPointAddress is required',\n { partialOp },\n 'This is an internal error, please contact support.',\n 'https://docs.fun.xyz',\n )\n }\n // clone partialOp and replace paymasterAndData with a workaround for pimlico since they overestimate gas limits for simulation\n const estimationUserOp = Object.assign({}, partialOp)\n if (this.id === '8453') {\n estimationUserOp.paymasterAndData =\n BASE_PIMLICO_PAYMASTER_AND_DATA_ESTIMATION\n } else if (this.id === '10') {\n estimationUserOp.paymasterAndData =\n OPTIMISM_PIMLICO_PAYMASTER_AND_DATA_ESTIMATION\n } else if (this.id === '1' || this.id === '36865') {\n estimationUserOp.paymasterAndData =\n ETHEREUM_PIMLICO_PAYMASTER_AND_DATA_ESTIMATION\n }\n\n let { preVerificationGas, callGasLimit, verificationGasLimit } =\n await estimateOp({\n chainId: this.id!,\n entryPointAddress: this.addresses.entryPointAddress,\n userOp: estimationUserOp,\n })\n if (!preVerificationGas || !verificationGasLimit || !callGasLimit) {\n throw new Error(\n JSON.stringify({\n preVerificationGas,\n callGasLimit,\n verificationGasLimit,\n }),\n )\n }\n callGasLimit = BigInt(callGasLimit) * 2n\n preVerificationGas = BigInt(preVerificationGas)\n verificationGasLimit = BigInt(verificationGasLimit!) + 200_000n\n return { preVerificationGas, verificationGasLimit, callGasLimit }\n }\n\n async getTxId(\n userOpHash: string,\n timeout = 60_000,\n interval = 5_000,\n fromBlock?: bigint,\n ): Promise<Hex | null> {\n const endtime = Date.now() + timeout\n const client = await this.getClient()\n const entryPointAddress = await this.getAddress('entryPointAddress')\n fromBlock = fromBlock ? fromBlock : (await client.getBlockNumber()) - 100n\n let filter\n while (Date.now() < endtime) {\n let events\n if (\n (await client.getChainId()) === 84531 ||\n (await client.getChainId()) === 36865\n ) {\n events = await ENTRYPOINT_CONTRACT_INTERFACE.getLog(\n entryPointAddress,\n 'UserOperationEvent',\n { userOpHash },\n client,\n fromBlock,\n )\n } else {\n filter = await ENTRYPOINT_CONTRACT_INTERFACE.createFilter(\n entryPointAddress,\n 'UserOperationEvent',\n [userOpHash],\n client,\n fromBlock,\n )\n events = await client.getFilterLogs({ filter })\n }\n\n if (events.length > 0) {\n return events[0].transactionHash\n }\n await new Promise((resolve) => setTimeout(resolve, interval))\n }\n return null\n }\n\n async addressIsContract(address: Address): Promise<boolean> {\n return isContract(address, await this.getClient())\n }\n}\n", "import { PartialAttemptOptions, retry } from '@lifeomic/attempt'\n\nimport { API_URL } from '../common/constants'\nimport {\n AccessDeniedError,\n ErrorCode,\n InternalFailureError,\n InvalidParameterError,\n ResourceNotFoundError,\n ThrottlingError,\n UserOpFailureError,\n} from '../errors'\nimport { stringify } from './index'\n\nconst errorHandler = (err: any, context: any) => {\n if (\n err instanceof ResourceNotFoundError ||\n err instanceof InvalidParameterError ||\n err instanceof UserOpFailureError\n ) {\n context.abort()\n }\n}\n\nexport const DEFAULT_RETRY_OPTIONS = {\n delay: 100,\n initialDelay: 0,\n maxDelay: 3000,\n factor: 2,\n maxAttempts: 5,\n timeout: 0,\n jitter: true,\n minDelay: 0,\n handleError: errorHandler,\n handleTimeout: null,\n beforeAttempt: null,\n calculateDelay: null,\n}\n\nexport const sendRequest = async (\n uri: string,\n method: string,\n apiKey: string,\n body?: object,\n retryOptions?: PartialAttemptOptions<any>,\n) => {\n try {\n const headers = {\n 'Content-Type': 'application/json',\n }\n if (apiKey) {\n headers['X-Api-Key'] = apiKey\n }\n\n const finalRetryOptions = {\n ...DEFAULT_RETRY_OPTIONS,\n ...(retryOptions || {}),\n } as PartialAttemptOptions<any>\n\n return retry(async function () {\n const response = await fetch(uri, {\n method,\n headers,\n redirect: 'follow',\n body: method !== 'GET' ? stringify(body) : undefined,\n })\n const json = await response.json()\n if (response.ok) {\n return json\n } else if (response.status === 400) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n `bad request ${JSON.stringify(json)}`,\n { body },\n 'check the api call parameters. its mostly because some call parameters are wrong',\n 'https://docs.fun.xyz',\n )\n } else if (response.status === 403) {\n throw new AccessDeniedError(\n ErrorCode.Unauthorized,\n 'Invalid API key or insufficient access.',\n { apiKey },\n 'Check your api key at https://app.fun.xyz and check with fun team if you believe something is off',\n 'https://docs.fun.xyz',\n )\n } else if (response.status === 404) {\n throw new ResourceNotFoundError(\n ErrorCode.ServerMissingData,\n JSON.stringify(json),\n { body },\n 'check the api call parameters. its mostly because some call parameters are wrong',\n 'https://docs.fun.xyz',\n )\n } else if (response.status === 429) {\n throw new ThrottlingError(\n ErrorCode.RequestLimitExceeded,\n `too many requests ${JSON.stringify(json)}`,\n\n { body },\n 'you are making too many requests. please slow down. Reach out to fun team if you need more quota',\n 'https://docs.fun.xyz',\n )\n } else if (response.status === 500) {\n if (json.errorCode === ErrorCode.UserOpFailureError) {\n throw new UserOpFailureError(\n ErrorCode.UserOpFailureError,\n JSON.stringify(json),\n { body },\n 'fix user op failure. Most of the time this is due to invalid parameters',\n 'https://docs.fun.xyz',\n )\n } else {\n throw new InternalFailureError(\n ErrorCode.ServerFailure,\n `server failure ${JSON.stringify(json)}`,\n { body },\n 'retry later. if it still fails, please contact us.',\n 'https://docs.fun.xyz',\n )\n }\n } else if (response.status === 504) {\n throw new InternalFailureError(\n ErrorCode.ServerTimeout,\n `server timeout failure ${JSON.stringify(json)}`,\n { body },\n 'retry later. if it still fails, please contact us.',\n 'https://docs.fun.xyz',\n )\n } else if (!response.ok) {\n throw new InternalFailureError(\n ErrorCode.UnknownServerError,\n `unknown server failure ${JSON.stringify(json)}`,\n { body },\n 'retry later. if it still fails, please contact us.',\n 'https://docs.fun.xyz',\n )\n }\n\n return {}\n }, finalRetryOptions)\n } catch (err) {\n throw new InternalFailureError(\n ErrorCode.ServerConnectionError,\n `Cannot connect to Fun API Service ${err}`,\n\n { body },\n 'retry later. if it still fails, please contact us.',\n 'https://docs.fun.xyz',\n )\n }\n}\n\nexport async function sendGetRequest(\n uri: string = API_URL,\n endpoint: string,\n apiKey: string = (globalThis as any).globalEnvOption?.apiKey,\n retryOptions: PartialAttemptOptions<any> = {},\n): Promise<any> {\n return await sendRequest(\n `${uri}/${endpoint}`,\n 'GET',\n apiKey,\n undefined,\n retryOptions,\n )\n}\n\nexport async function sendPostRequest(\n uri: string = API_URL,\n endpoint: string,\n body: object,\n apiKey: string = (globalThis as any).globalEnvOption?.apiKey,\n retryOptions: PartialAttemptOptions<any> = {},\n): Promise<any> {\n return await sendRequest(\n `${uri}/${endpoint}`,\n 'POST',\n apiKey,\n body,\n retryOptions,\n )\n}\n\nexport async function sendDeleteRequest(\n uri: string = API_URL,\n endpoint: string,\n apiKey: string = (globalThis as any).globalEnvOption.apiKey!,\n): Promise<void> {\n await sendRequest(`${uri}/${endpoint}`, 'DELETE', apiKey)\n}\n\nexport async function sendPutRequest(\n uri: string = API_URL,\n endpoint: string,\n body: object,\n apiKey: string = (globalThis as any).globalEnvOption.apiKey!,\n): Promise<void> {\n await sendRequest(`${uri}/${endpoint}`, 'PUT', apiKey, body)\n}\n", "const discord = 'https://discord.gg/mvQunrx6NG'\nexport class BaseError extends Error {\n timestamp: string\n\n constructor(\n public baseType: string,\n public type: string,\n public code: string,\n msg: string,\n\n public paramsUsed: any,\n fixSuggestion: string,\n docLink: string,\n isInternal = false,\n ) {\n super(`${msg}\\n\\n${fixSuggestion}\\nDocs: ${docLink}\\nDiscord: ${discord}`)\n if (isInternal) {\n this.loadEnd()\n }\n this.message += '\\n\\nTrace:'\n this.timestamp = new Date().toUTCString()\n }\n\n loadEnd() {\n this.message +=\n '\\n\\nThis is an internal sdk error. Please contact the fun team at our Discord for the fastest response.'\n }\n}\n", "{\n \"AA21\": {\n \"info\": \" Your wallet lacks funds for this transaction.\",\n \"suggestion\": \"To fix this error, make sure you have enough funds in your wallet to cover the transaction fee.\"\n },\n \"FW000\": {\n \"info\": \" Create3Deployer.requireDeployerOnly() - Signatures were not sorted before being passed in\",\n \"suggestion\": \"To fix this error, make sure to short sigs before passing them into `requireDeployerOnly`. You can do this by calling `sigs.sort()` before passing them in. It is also possible to run into this error if the hash that was signed was not the correct hash.\"\n },\n \"FW001\": {\n \"info\": \" Create3Deployer.requireDeployerOnly() - Signature failed to be recovered. ercrecover returned the zero address\",\n \"suggestion\": \"To fix this error, make sure to pass in enough valid signatures that sign the `hash` in the `sigs` array\"\n },\n \"FW002\": {\n \"info\": \" Create3Deployer.addDeployer() - Invalid Hash\",\n \"suggestion\": \"To fix this error, make sure `hash` is equal to `hashAddDeployer()`\"\n },\n \"FW003\": {\n \"info\": \" Create3Deployer.removeDeployer() - Invalid Hash\",\n \"suggestion\": \"To fix this error, make sure `hash` is equal to `hashRemoveDeployer()`\"\n },\n \"FW004\": {\n \"info\": \" Create3Deployer.setThreshold() - Threshold must be greater than 1\",\n \"suggestion\": \"To fix this error, `threshold` is greater than 1\"\n },\n \"FW005\": {\n \"info\": \" Create3Deployer.setThreshold() - Invalid Hash\",\n \"suggestion\": \"To fix this error, make sure `hash` is equal to `keccak256(abi.encodePacked(_threshold))`\"\n },\n \"FW006\": {\n \"info\": \" Create3Deployer.callChild() - Invalid Hash\",\n \"suggestion\": \"To fix this error, make sure `hash` is equal to `keccak256(abi.encodePacked(child, data, _nonce, block.chainid))`\"\n },\n \"FW007\": {\n \"info\": \" Create3Deployer.callChild() - Invalid Nonce, nonce must be 1 greater than the current nonce\",\n \"suggestion\": \"To fix this error, make sure `_nonce` is equal to the current nonce + 1\"\n },\n \"FW008\": {\n \"info\": \" Create3Deployer.callChild() - call to child failed\",\n \"suggestion\": \"To fix this error, check to see what is making the call to the child fail\"\n },\n \"FW009\": {\n \"info\": \" Create3Deployer.deploy() - Invalid Hash\",\n \"suggestion\": \"To fix this error, make sure `hash` is equal to `keccak256(abi.encodePacked(_salt, _creationCode))`\"\n },\n \"FW010\": {\n \"info\": \" FunWalletFactory.constructor() - Invalid Address, cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure `_deployer` is not equal to the zero address\"\n },\n \"FW011\": {\n \"info\": \" FunWalletFactory.constructor() - Invalid Address, cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure `_funWalletImpAddress` is not equal to the zero address\"\n },\n \"FW012\": {\n \"info\": \" FunWalletFactory.constructor() - Invalid Address, cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure `_feeOracle` is not equal to the zero address\"\n },\n \"FW013\": {\n \"info\": \" FunWalletFactory.constructor() - Invalid Address, cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure `_walletInit` is not equal to the zero address\"\n },\n \"FW014\": {\n \"info\": \" FunWalletFactory.constructor() - Unable to generate the address from this deployerSalt\",\n \"suggestion\": \"To fix this error, make sure `FunWalletFactoryV1` has not already been deployed from the given create3deployer contract. If it has been, change `FunWalletFactoryV1` to `FunWalletFactoryV2` or another version.\"\n },\n \"FW015\": {\n \"info\": \" FunWalletFactory.constructor() - Generated the wrong address from this deployerSalt\",\n \"suggestion\": \"To fix this error, make sure `FunWalletFactoryV1` has not already been deployed from the given create3deployer contract. If it has been, change `FunWalletFactoryV1` to `FunWalletFactoryV2` or another version.\"\n },\n \"FW016\": {\n \"info\": \" FunWalletFactory.createAccount() - Call to initialize failed on the deployed proxy\",\n \"suggestion\": \"To fix this error, make sure the `initializerCallData` is formatted correctly\"\n },\n \"FW017\": {\n \"info\": \" FunWalletFactory - Caller must be deployer\",\n \"suggestion\": \"To fix this error, make sure to call the function from the deployer address\"\n },\n \"FW018\": {\n \"info\": \" WalletInit.commit() - The previous commit has not expired\",\n \"suggestion\": \"To fix this error, wait for the previous commit with this `commitKey` to expire. This should take at most 10 minutes.\"\n },\n \"FW019\": {\n \"info\": \" WalletInit.validateSalt() - The hash at the commitKey does not match `keccak256(abi.encode(seed, owner, initializerCallData))`\",\n \"suggestion\": \"To fix this error, make sure the seed, owner, and initializerCallData are hashed and stored in commits at the corresponding `commitKey`\"\n },\n \"FW020\": {\n \"info\": \" WalletInit.validateSalt() - The new owner of the funwallet must match data.newFunWalletOwner from loginData\",\n \"suggestion\": \"To fix this error, make sure the owner set in `loginData` matches the owner address returned from the tweet.\"\n },\n \"FW021\": {\n \"info\": \" WalletInit.setOracle() - The address of the new `_oracle` must not be the zero address\",\n \"suggestion\": \"To fix this error, make sure `_oracle` is not the zero address\"\n },\n \"FW022\": {\n \"info\": \" Create3Deployer.deployFromChild() - Invalid Child Address\",\n \"suggestion\": \"To fix this error, make sure the caller is a contract deployed from the Create3Deployer\"\n },\n \"FW023\": {\n \"info\": \" ImplementationRegistry.verifyIsValidContractAndImplementation() - Invalid Target Code Hash\",\n \"suggestion\": \"To fix this error, make sure the caller is a contract targeted is a ERC1967ProxyData contract\"\n },\n \"FW024\": {\n \"info\": \" ImplementationRegistry.verifyIsValidContractAndImplementation() - Invalid Contract Implementation Address\",\n \"suggestion\": \"To fix this error, make sure you have the minimun threshold amount of valid signatures.\"\n },\n \"FW025\": {\n \"info\": \" ImplementationRegistry.addImplementation() - Invalid Signature Amount\",\n \"suggestion\": \"To fix this error, make sure you have the minimun threshold amount of valid signatures.\"\n },\n \"FW026\": {\n \"info\": \" ImplementationRegistry.removeImplementation() - Invalid Signature Amount\",\n \"suggestion\": \"To fix this error, make sure you have the minimun threshold amount of valid signatures.\"\n },\n \"FW027\": {\n \"info\": \" WalletInit.commit() - Unable to commit with a previously used commit hash\",\n \"suggestion\": \"To fix this error, make sure you are not reusing someone else's commit hash. If there are conflicts, just regenerate the seed randomly\"\n },\n \"FW028\": {\n \"info\": \" MultiSigDeployer.constructor() - Threshold can't be greater than deployers length\",\n \"suggestion\": \"To fix this error, make sure the threshold value is not 0\"\n },\n \"FW029\": {\n \"info\": \" WalletInit.invalidateUsedSeed() - msg.sender must equal funwalletfactory\",\n \"suggestion\": \"To fix this error, make sure you are calling this function from the FunWalletFactory contract\"\n },\n \"FW030\": {\n \"info\": \" WalletInit.setFunWalletFactory() - funwalletfactory address cannot be set to 0\",\n \"suggestion\": \"To fix this error, make sure you are passing in the valid funwalletfactory address\"\n },\n \"FW031\": {\n \"info\": \" WalletInit.validateSalt() - seed has already been used\",\n \"suggestion\": \"To fix this error, make sure you are not using an existing salt\"\n },\n \"FW032\": {\n \"info\": \" FunWalletFactory.setFeeOracle() - Cannot set the fee oracle address to 0\",\n \"suggestion\": \"To fix this error, make sure you are using the correct address of the fee oracle\"\n },\n \"FW033\": {\n \"info\": \" FunWalletFactory.constructor() - Invalid Address, cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure `_entryPoint` is not equal to the zero address\"\n },\n \"FW034\": {\n \"info\": \" Create3Deployer.callChild() - Value not equal to msg.value\",\n \"suggestion\": \"To fix this error, make sure `msg.value` is equal to the `value` parameter.\"\n },\n \"FW100\": {\n \"info\": \" Module.execute() - execute() needs to be overriden\",\n \"suggestion\": \"To fix this error, make sure you are overriding the execute method in your module\"\n },\n \"FW101\": {\n \"info\": \" ApproveAndExec.approveAndExecute() - the approveData's first four bytes must be the approve() function selector\",\n \"suggestion\": \"To fix this error, change `approveData` such that the first four bytes are `bytes4(keccak256('approve(address,uint256)'))`\"\n },\n \"FW102\": {\n \"info\": \" ApproveAndSwap.constructor() - `_wethAddr` cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure `_wethAddr` is not set to the zero address\"\n },\n \"FW103\": {\n \"info\": \" ApproveAndSwap.constructor() - `_router` cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure `_router` is not set to the zero address\"\n },\n \"FW104\": {\n \"info\": \" ApproveAndSwap.executeSwapEth() - msg.sender does not have enough weth\",\n \"suggestion\": \"To fix this error, make sure msg.sender has a weth balance >= `amount`\"\n },\n \"FW105\": {\n \"info\": \" ApproveAndSwap.\\\\_internalSwap() - Approve failed\",\n \"suggestion\": \"To fix this error, make sure you have formatted approve correctly\"\n },\n \"FW106\": {\n \"info\": \" AaveWithdraw.execute() - Withdrawing a zero balance\",\n \"suggestion\": \"You are trying to withdraw from aave but don't have a balance\"\n },\n \"FW107\": {\n \"info\": \" ApproveAndExec.approveAndExecute() - Approve failed\",\n \"suggestion\": \"The token you tried to approve failed\"\n },\n \"FW108\": {\n \"info\": \" UniswapV3LimitOrder.execute() - Approval Failed\",\n \"suggestion\": \"You are trying to withdraw from aave but don't have a balance\"\n },\n \"FW109\": {\n \"info\": \" UniswapV3LimitOrder.constructor() - Router cannot be address zero\",\n \"suggestion\": \"Make sure you are not passing in the zero address when initializing the module\"\n },\n \"FW110\": {\n \"info\": \" UniswapV3LimitOrder.constructor() - Quoter cannot be zero address\",\n \"suggestion\": \"Make sure you are not passing in the zero address when initializing the module\"\n },\n \"FW200\": {\n \"info\": \" FeePercentOracle.setValues() - feepercent must be less than or equals to 100%\",\n \"suggestion\": \"To fix this error, `_feepercent` must be less than or equals to `10 ** _decimals`\"\n },\n \"FW201\": {\n \"info\": \" FeePercentOracle.withdrawEth() - eth transfer failed\",\n \"suggestion\": \"To fix this error, investigate why the eth withdrawal failed. This is likely because `amount` was greater than the eth balance in the FeePercentOracle\"\n },\n \"FW202\": {\n \"info\": \" TokenPriceOracle.getTokenValueOfEth() - chainlink aggregator price must be greater than 0\",\n \"suggestion\": \"To fix this error, retry the call and make sure price is greater than 0\"\n },\n \"FW203\": {\n \"info\": \" TokenPriceOracle.getTokenValueOfEth() - chainlink aggregator updatedAt must be greater than 0\",\n \"suggestion\": \"To fix this error, retry the call and make sure updatedAt is greater than 0\"\n },\n \"FW204\": {\n \"info\": \" TokenPriceOracle.getTokenValueOfEth() - chainlink aggregator answeredInRound must be greater than or equal to roundId\",\n \"suggestion\": \"To fix this error, retry the call and make sure answeredInRound must be greater than or equal to roundId\"\n },\n \"FW205\": {\n \"info\": \" TwitterOracle.batchSetTweet() - socialHandles, loginTypes, seeds, owners length must match in length\",\n \"suggestion\": \"To fix this error, make sure all arrays passed into this function are the same length.\"\n },\n \"FW206\": {\n \"info\": \" TwitterOracle.setTweet() - the seed from twitter cannot be empty\",\n \"suggestion\": \"To fix this error, make sure the seed you post on twitter is not empty {}\"\n },\n \"FW207\": {\n \"info\": \" TwitterOracle.setTweet() - the address from twitter cannot be 0\",\n \"suggestion\": \"To fix this error, make sure the address you post on twitter for the new owner is not the zero address, otherwise you would be unable to claim ownership of the funwallet\"\n },\n \"FW208\": {\n \"info\": \" TwitterOracle.batchSetTweet() - the seed from twitter cannot be empty\",\n \"suggestion\": \"To fix this error, make sure the seed you post on twitter is not empty {}\"\n },\n \"FW209\": {\n \"info\": \" TwitterOracle.batchSetTweet() - the address from twitter cannot be 0\",\n \"suggestion\": \"To fix this error, make sure the address you post on twitter for the new owner is not the zero address, otherwise you would be unable to claim ownership of the funwallet\"\n },\n \"FW210\": {\n \"info\": \" TwitterOracle.fetchTweet() - the seed from twitter cannot be empty\",\n \"suggestion\": \"To fix this error, make sure the seed you post on twitter is not empty {}\"\n },\n \"FW211\": {\n \"info\": \" TwitterOracle.fetchTweet() - the address from twitter cannot be 0\",\n \"suggestion\": \"To fix this error, make sure the address you post on twitter for the new owner is not the zero address, otherwise you would be unable to claim ownership of the funwallet\"\n },\n \"FW300\": {\n \"info\": \" BasePaymaster.constructor() - entrypoint address cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure entrypoint address is not the zero address\"\n },\n \"FW301\": {\n \"info\": \" BasePaymaster.\\\\_requireFromEntryPoint() - the msg.sender must be from the entrypoint\",\n \"suggestion\": \"To fix this error, make sure the msg.sender must be from the entrypoint\"\n },\n \"FW302\": {\n \"info\": \" GaslessPaymaster.batchActions() - the ith delegate call failed\",\n \"suggestion\": \"To fix this error, make sure the calldata for `data[i]` is a valid call\"\n },\n \"FW303\": {\n \"info\": \" GaslessPaymaster.batchActions() - batchActions consumed more eth than `msg.value` allocated\",\n \"suggestion\": \"To fix this error, increase the amount of msg.value you are passing to this function\"\n },\n \"FW304\": {\n \"info\": \" GaslessPaymaster.\\\\_withdrawDepositTo() - the withdrawal has not been unlocked\",\n \"suggestion\": \"To fix this error, wait till block.number is greater than the unlockBlock for the sender and make sure `unlockBlock[sender]` is nonzero\"\n },\n \"FW305\": {\n \"info\": \" GaslessPaymaster.\\\\_withdrawDepositTo() - the balances of the sender must be greater than the withdrawal amount\",\n \"suggestion\": \"To fix this error, decrease the amount you are trying to withdraw\"\n },\n \"FW306\": {\n \"info\": \" GaslessPaymaster.\\\\_validatePaymasterUserOp() - the userOp.paymasterAndData must have a length of 40\",\n \"suggestion\": \"To fix this error, change the `paymasterAndData` field in the `userOp` such that the length is 40\"\n },\n \"FW307\": {\n \"info\": \" GaslessPaymaster.\\\\_validatePaymasterUserOp() - the verificationGasLimit must be greater than the `COST_OF_POST` variable in GaslessPaymaster\",\n \"suggestion\": \"To fix this error, increase the `verificationGasLimit` in the `userOp`\"\n },\n \"FW308\": {\n \"info\": \" GaslessPaymaster.\\\\_validatePaymasterUserOp() - the sponsor's eth is not locked for use\",\n \"suggestion\": \"To fix this error, make sure the sponsor's eth is locked using `lockDeposit()`\"\n },\n \"FW309\": {\n \"info\": \" GaslessPaymaster.\\\\_validatePaymasterUserOp() - The sponsor needs to approve the spender\",\n \"suggestion\": \"To fix this error, make sure to approve the spender using `setSpenderWhitelistMode()` or `setSpenderBlacklistMode()` and the sponsor's list mode is set to whitelist mode or blacklist mode using `setListMode()\"\n },\n \"FW310\": {\n \"info\": \" GaslessPaymaster.\\\\_validatePaymasterUserOp() - The sponsor does not have sufficient eth in the paymaster to cover this operation\",\n \"suggestion\": \"To fix this error, make sure to stake enough eth from the sponsor's address using `addDepositTo()`\"\n },\n \"FW311\": {\n \"info\": \" GaslessPaymaster.addDepositTo() - `msg.value` must be greater than or equal to amount\",\n \"suggestion\": \"To fix this error, make sure `msg.value` must be greater than or equal to amount\"\n },\n \"FW312\": {\n \"info\": \" TokenPaymaster.batchActions() - the ith delegate call failed\",\n \"suggestion\": \"To fix this error, make sure the calldata for `data[i]` is a valid call\"\n },\n \"FW313\": {\n \"info\": \" TokenPaymaster.batchActions() - batchActions consumed more eth than `msg.value` allocated\",\n \"suggestion\": \"To fix this error, increase the amount of msg.value you are passing to this function\"\n },\n \"FW314\": {\n \"info\": \" TokenPaymaster.\\\\_addTokenDepositTo() - token decimals must be greater than 0\",\n \"suggestion\": \"To fix this error, change the decimals in token using `setTokenData()`\"\n },\n \"FW315\": {\n \"info\": \" TokenPaymaster.\\\\_withdrawTokenDepositTo() - token is not unlocked for withdrawal\",\n \"suggestion\": \"To fix this error, call `unlockTokenDepositAfter()`\"\n },\n \"FW316\": {\n \"info\": \" TokenPaymaster.\\\\_withdrawTokenDepositTo() - you are withdrawing more tokens that you have in balance\",\n \"suggestion\": \"To fix this error, call `getTokenBalance()` to check how many tokens you have and make sure `amount` is less than that\"\n },\n \"FW317\": {\n \"info\": \" TokenPaymaster.\\\\_withdrawEthDepositTo() - token is not unlocked for withdrawal\",\n \"suggestion\": \"To fix this error, call `unlockTokenDepositAfter()` with `ETH` as the token\"\n },\n \"FW318\": {\n \"info\": \" TokenPaymaster.\\\\_withdrawEthDepositTo() - you are withdrawing more ether that you have in balance\",\n \"suggestion\": \"To fix this error, call `getTokenBalance()` with `ETH` as the token to check how many tokens you have and make sure `amount` is less than that\"\n },\n \"FW319\": {\n \"info\": \" TokenPaymaster.\\\\_getTokenValueOfEth() - call to token oracle failed\",\n \"suggestion\": \"To fix this error, check the token oracle and call `setTokenData()` to change the oracle if it is broken\"\n },\n \"FW320\": {\n \"info\": \" TokenPaymaster.\\\\_reimbursePaymaster() - failed to reimbursePaymaster with tokens via `permitTransfer()`\",\n \"suggestion\": \"To fix this **error**, make sure you have permitted the paymaster to spend your tokens\"\n },\n \"FW321\": {\n \"info\": \" TokenPaymaster.\\\\_reimbursePaymaster() - spender doesn't have enough tokens\",\n \"suggestion\": \"To fix this error, make sure to add more tokens to the token paymaster via `addTokenDepositTo()`\"\n },\n \"FW322\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - `paymasterAndData` length must be 60\",\n \"suggestion\": \"To fix this error, make sure to set `paymasterAndData` length to be 60\"\n },\n \"FW323\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - `verificationGasLimit` must be greater than `COST_OF_POST`\",\n \"suggestion\": \"To fix this error, make sure to set the userOp's `verificationGasLimit` to be greater than `COST_OF_POST`\"\n },\n \"FW324\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - the sponsor must lock their ETH\",\n \"suggestion\": \"To fix this error, make sure the sponsor has locked their eth by calling `lockTokenDeposit()` from the sponsor address\"\n },\n \"FW325\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - the account must lock their tokens\",\n \"suggestion\": \"To fix this error, make sure the user of the token paymaster has locked their tokens by calling `lockTokenDeposit()` from their address\"\n },\n \"FW326\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - the sponsor eth balance must be greater than maxCost\",\n \"suggestion\": \"To fix this error, make sure the sponsor eth balance is greater than maxCost\"\n },\n \"FW327\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - the sponsor must approve the spender\",\n \"suggestion\": \"To fix this error, make sure the sponsor has approved the spender by calling `setSpenderWhitelistMode()` or `setSpenderBlacklistMode()` and the sponsor's list mode is set to whitelist mode or blacklist mode using `setListMode()`\"\n },\n \"FW328\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - the sponsor must have approved the token to the paymaster\",\n \"suggestion\": \"To fix this error, make sure the sponsor has approved the spender by calling `setTokenWhitelistMode()` or `setTokenBlacklistMode()` and the sponsor's list mode is set to whitelist mode or blacklist mode using `setTokenListMode()`\"\n },\n \"FW329\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - the permitted token must be equal to the token you are trying to pay with if using permit\",\n \"suggestion\": \"To fix this error, make sure the permitted token is equal to the token you are trying to pay with if using permit\"\n },\n \"FW330\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - the permitted transfer recipient must be the token paymaster\",\n \"suggestion\": \"To fix this error, make sure to permit the token paymaster to spend your tokens\"\n },\n \"FW331\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - the permitted transfer amount must be greater than or equal to the maxTokenCost\",\n \"suggestion\": \"To fix this error, make sure the permitted transfer amount is greater than or equal to the maxTokenCost\"\n },\n \"FW332\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - if permit was not used, make sure the tokenPaymaster was approved to spend tokens by the sponsor or enough tokens were deposited into the TokenPaymaster\",\n \"suggestion\": \"To fix this error, make sure the tokenPaymaster was approved(`approve()`) to spend tokens by the sponsor or enough tokens were deposited into the TokenPaymaster via `addTokenDepositTo()`\"\n },\n \"FW333\": {\n \"info\": \" TokenPaymaster.addEthDepositTo() - make sure msg.value is greater than or equal to amount\",\n \"suggestion\": \"To fix this error, make sure that the msg.value is greater than or equal to amount\"\n },\n \"FW334\": {\n \"info\": \" TokenPaymaster.addTokenDepositTo() - sponsor cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure the sponsor is not the zero address\"\n },\n \"FW335\": {\n \"info\": \" TokenPaymaster.addTokenDepositTo() - target cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure the target is not the zero address\"\n },\n \"FW336\": {\n \"info\": \" TokenPaymaster.addTokenDepositTo() - token address cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure the token address is not the zero address\"\n },\n \"FW337\": {\n \"info\": \" TokenPaymaster.addTokenDepositTo() - spender address cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure the spender address is not the zero address\"\n },\n \"FW338\": {\n \"info\": \" TokenPaymaster.addTokenDepositTo() - the token oracle cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure the token oracle is not the zero address\"\n },\n \"FW339\": {\n \"info\": \" TokenPaymaster.addTokenDepositTo() - the tokenAddress cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure the tokenAddress is not the zero address\"\n },\n \"FW340\": {\n \"info\": \" TokenPaymaster.addTokenDepositTo() - the token decimals must be greater than 0\",\n \"suggestion\": \"To fix this error, make sure the token decimals is greater than 0\"\n },\n \"FW341\": {\n \"info\": \" TokenPaymaster.addTokenDepositTo() - the chainlink aggregator cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure the chainlink aggregator is not the zero address\"\n },\n \"FW342\": {\n \"info\": \" TokenPaymaster.removeTokenData() - The token doesn't exist in tokens\",\n \"suggestion\": \"To fix this error, make sure the token address is not the zero address\"\n },\n \"FW343\": {\n \"info\": \" TokenPaymaster.removeTokenData() - The tokenListIndex doesn't match with the tokenAddress\",\n \"suggestion\": \"To fix this error, make sure the token at tokenList[tokenListIndex] is the same as the tokenAddress\"\n },\n \"FW344\": {\n \"info\": \" GaslessPaymaster.batchActions() - Cannot recursively call batchActions from within batchActions\",\n \"suggestion\": \"To fix this error, make sure you are not recursively calling batchActions from within batchActions\"\n },\n \"FW345\": {\n \"info\": \" TokenPaymaster.batchActions() - Cannot recursively call batchActions from within batchActions\",\n \"suggestion\": \"To fix this error, make sure you are not recursively calling batchActions from within batchActions\"\n },\n \"FW346\": {\n \"info\": \" TokenPaymaster.postOp() - Invalid Permit transfer amount\",\n \"suggestion\": \"To fix this error, make sure your permit transfer has transfered the correct amount of tokens\"\n },\n \"FW347\": {\n \"info\": \" TokenPaymaster.\\\\_reimbursePaymaster() - Invalid amount of tokens transferred\",\n \"suggestion\": \"The likely cause of this error is using a deflationary token that charges a tax when you transfer tokens. To fix this error, make sure you are transferring the correct amount of tokens and to account for the tax/deflation.\"\n },\n \"FW348\": {\n \"info\": \" UserAuthentication.init() - groupId count must be equal to groups length\",\n \"suggestion\": \"Make sure the number of groupIds equals the number of groups.\"\n },\n \"FW349\": {\n \"info\": \" TokenPaymaster.calculatePostOpGas() - Invalid Auth Type\",\n \"suggestion\": \"Make sure the authtype is correct\"\n },\n \"FW350\": {\n \"info\": \" TokenPaymaster.\\\\_validatePaymasterUserOp() - Does not have enough balance of token\",\n \"suggestion\": \"To fix this error, make sure your has enough tokens to permit transfer\"\n },\n \"FW351\": {\n \"info\": \" BasePaymaster.\\\\withdrawStakeFromEntryPoint() - Cannot withdraw to address zero\",\n \"suggestion\": \"To fix this error, make sure you are not withdrawing to address zero\"\n },\n \"FW401\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"### `FW402`: RoleBasedAccessControl.isValidAction(), isValidActionAndFee() - Invalid Target\"\n },\n \"FW402\": {\n \"info\": \" RoleBasedAccessControl.isValidAction(), isValidActionAndFee() - Invalid Target\",\n \"suggestion\": \"To fix this error, make sure the target that you are calling is in the merkle root of allowed targets verified by the rule. If this does not work make sure you are using the correct merkle root implementation.\"\n },\n \"FW403\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the selector that you are calling is in the merkle root of allowed selector verified by the rule. If this does not work make sure you are using the correct merkle root implementation.\"\n },\n \"FW404\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the ownerId is not 0 or an existing owner\"\n },\n \"FW405\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the ruleId is not 0\"\n },\n \"FW406\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the rule that you are using has a deadline that has passed.\"\n },\n \"FW408\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"### `FW410`: RoleBasedAccessControl: isValidAction(), isValidActionAndFee() - Rule not added to role\"\n },\n \"FW410\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the rule is added to the role\"\n },\n \"FW411\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the value for the execution call is less than the limit\"\n },\n \"FW412\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the fee value for the execution call is less than the limit\"\n },\n \"FW413\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the fee recipient is in the rule fee merkle root\"\n },\n \"FW414\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the fee token is in the rule fee merkle root\"\n },\n \"FW417\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the rule you are using exists\"\n },\n \"FW418\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the user is in the role\"\n },\n \"FW419\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the feeRecipientTokenMerkleRootHash is not zero\"\n },\n \"FW420\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the targetSelectorMerkleRootHash is not zero\"\n },\n \"FW421\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"### `FW422`: RoleBasedAccessControl: init() - Wallet has not been initialized\"\n },\n \"FW422\": {\n \"info\": \" RoleBasedAccessControl\",\n \"suggestion\": \"To fix this error, make sure the wallet has not initialized the validation contract\"\n },\n \"FW500\": {\n \"info\": \" FunWallet.initialize() - the entrypoint cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure the entrypoint is not the zero address\"\n },\n \"FW501\": {\n \"info\": \" FunWallet.initialize() - the msg.sender cannot be the address of the Funwallet contract\",\n \"suggestion\": \"To fix this error, make sure the msg.sender is not the address of the Funwallet contract\"\n },\n \"FW502\": {\n \"info\": \" FunWallet.\\\\_requireFromFunWalletProxy() - the function must be called from the funwallet proxy\",\n \"suggestion\": \"To fix this error, make sure the msg.sender == funwallet\"\n },\n \"FW503\": {\n \"info\": \" FunWallet.updateEntryPoint() - the new entrypoint address cannot be the zero address\",\n \"suggestion\": \"To fix this error, make sure the new entrypoint address is not the zero address\"\n },\n \"FW504\": {\n \"info\": \" FunWallet.depositToEntryPoint() - not enough eth in the funwallet\",\n \"suggestion\": \"To fix this error, make sure the funwallet has more than the amount of eth you are trying to deposit\"\n },\n \"FW505\": {\n \"info\": \" FunWallet.\\\\_transferEthFromEntrypoint() - withdrawing eth from the entrypoint failed\",\n \"suggestion\": \"To fix this error, retry the operation and make sure you have greater than amount balance in the entrypoint\"\n },\n \"FW506\": {\n \"info\": \" FunWallet.\\\\_requireFromModule() - make sure a funwalletfactory deployed the module\",\n \"suggestion\": \"To fix this error, make sure the msg.sender is the module\"\n },\n \"FW507\": {\n \"info\": \" FunWallet.\\\\_requireFromEntryPoint() - the msg.sender must be the entrypoint\",\n \"suggestion\": \"To fix this error, make sure the msg.sender is the entrypoint\"\n },\n \"FW508\": {\n \"info\": \" WalletFee.\\\\_transferEth() - the eth transfer failed\",\n \"suggestion\": \"To fix this error, retry the operation and make sure you have greater than amount balance in the wallet\"\n },\n \"FW509\": {\n \"info\": \" WalletFee.\\\\_handleFee() - the developer eth transfer failed\",\n \"suggestion\": \"To fix this error, retry the operation and make sure you have greater than amount balance in the wallet\"\n },\n \"FW510\": {\n \"info\": \" WalletFee.\\\\_handleFee() - the funOracle eth transfer failed\",\n \"suggestion\": \"To fix this error, retry the operation and make sure you have greater than amount balance in the wallet\"\n },\n \"FW511\": {\n \"info\": \" WalletValidation.initValidations() - the WalletValidations contract has already been initialized\",\n \"suggestion\": \"Don't call initValidations() more than once\"\n },\n \"FW512\": {\n \"info\": \" WalletValidation.initValidations() - make sure there are more than zero validations\",\n \"suggestion\": \"To fix this error, make sure there are more than zero validations and the number of validation contract addresses are equal to the number of `initCallData` elements\"\n },\n \"FW513\": {\n \"info\": \" WalletValidation.initValidations() - make sure there are no duplicate validation contract addresses\",\n \"suggestion\": \"To fix this error, make sure there are no duplicate validation contract addresses in `validationData`\"\n },\n \"FW514\": {\n \"info\": \" WalletValidation.\\\\_validateUserOp() - make sure the signature length is greater than 0\",\n \"suggestion\": \"To fix this error, make sure the signature length is greater than 0\"\n },\n \"FW515\": {\n \"info\": \" WalletValidation.isValidSignature() - make sure the number of validations is greater than zero\",\n \"suggestion\": \"To fix this error, make sure the number of validations is greater than zero\"\n },\n \"FW516\": {\n \"info\": \" WalletValidation.\\\\_requireValidValidation() - the validation failed\",\n \"suggestion\": \"To fix this error, make sure the validation contract returns true\"\n },\n \"FW517\": {\n \"info\": \" WalletValidation.\\\\_requireValidValidationFormat() - the validation was incorrectly formatted\",\n \"suggestion\": \"To fix this error, make sure the validation contract address is not the zero address and the validation is valid and the address is not the zero address\"\n },\n \"FW518\": {\n \"info\": \" WalletValidation.\\\\_requireValidPrevValidation() - the previous validation must be linked to this validation\",\n \"suggestion\": \"To fix this error, make sure the previous validation is linked to this validation when adding or removing the validation\"\n },\n \"FW519\": {\n \"info\": \" WalletValidation.getValidations() - you must have more than zero validations to get validations\",\n \"suggestion\": \"To fix this error, make sure there are a nonzero amount of validations\"\n },\n \"FW520\": {\n \"info\": \" WalletValidation.addValidation() - The caller must be this wallet.\",\n \"suggestion\": \"To fix this error, make sure you are calling addValidation() from your funwallet.\"\n },\n \"FW521\": {\n \"info\": \" WalletValidation.removeValidation() - The caller must be this wallet.\",\n \"suggestion\": \"To fix this error, make sure you are calling removeValidation() from your funwallet.\"\n },\n \"FW522\": {\n \"info\": \" WalletValidation.updateValidation() - The caller must be this wallet.\",\n \"suggestion\": \"To fix this error, make sure you are calling updateValidation() from your funwallet.\"\n },\n \"FW523\": {\n \"info\": \" WalletModules.permitTransfer() - Invalid Permit Signature.\",\n \"suggestion\": \"To fix this error, make sure you have a valid permit signature.\"\n },\n \"FW524\": {\n \"info\": \" WalletValidation.getValidations() - No Validations in the wallet\",\n \"suggestion\": \"To fix this error, make sure the wallet has validation contracts\"\n },\n \"FW600\": {\n \"info\": \" DataLib\",\n \"suggestion\": \"To fix this error, make sure you are calling either execFromEntryPoint() or execFromEntryPointWithFee() from your funwallet.\"\n },\n \"FW601\": {\n \"info\": \" Ownable2StepNoRenounce\",\n \"suggestion\": \"To fix this error, don't call this function.\"\n }\n}\n", "export type ErrorData = {\n location: string\n error?: {\n txDetails?: ErrorTransactionDetails\n reasonData?: {\n title: string\n reasons: string[]\n }\n }\n}\n\nexport type ErrorTransactionDetails = {\n method: string\n params: any[]\n contractAddress?: string\n chainId?: number | string\n}\n\nexport enum ErrorBaseType {\n ClientError = 'ClientError',\n ServerError = 'ServerError',\n}\n\nexport enum ErrorType {\n InvalidParameter = 'InvalidParameter',\n InternalServerFailure = 'InternalServerFailure',\n ResourceNotFound = 'ResourceNotFound',\n InvalidAction = 'InvalidAction',\n ThrottlingError = 'ThrottlingError',\n AccessDeniedError = 'AccessDeniedError',\n UserOpFailureError = 'UserOpFailureError',\n}\n\nexport enum ErrorCode {\n MissingParameter = 'MissingParameter',\n InvalidParameter = 'InvalidParameter',\n InvalidThreshold = 'InvalidThreshold',\n InvalidChainIdentifier = 'InvalidChainIdentifier',\n InvalidNFTIdentifier = 'InvalidNFTIdentifier',\n InsufficientSignatures = 'InsufficientSignatures',\n InvalidParameterCombination = 'InvalidParameterCombination',\n CheckPointHintsNotFound = 'CheckPointHintsNotFound',\n GroupNotFound = 'GroupNotFound',\n TokenNotFound = 'TokenNotFound',\n AddressNotFound = 'AddressNotFound',\n UserAlreadyExists = 'UserAlreadyExists',\n UserNotFound = 'UserNotFound',\n ChainNotSupported = 'ChainNotSupported',\n ServerMissingData = 'ServerMissingData',\n ServerFailure = 'ServerFailure',\n ServerTimeout = 'ServerTimeout',\n UnknownServerError = 'UnknownServerError',\n ServerConnectionError = 'ServerConnectionError',\n UserOpFailureError = 'UserOpFailureError',\n Unauthorized = 'Unauthorized',\n RequestLimitExceeded = 'RequestLimitExceeded',\n WalletPrefundError = 'PrefundError',\n GasSponsorFundError = 'GasSponsorFundError',\n FunWalletErrorCode = 'FunWalletErrorCode',\n BridgeRouteNotFound = 'BridgeRouteNotFound',\n BridgeAllowanceDataNotFound = 'BridgeAllowanceDataNotFound',\n BridgeApproveTxDataNotFound = 'BridgeApproveTxDataNotFound',\n CheckoutInitDepositAddrNotFound = 'CheckoutInitDepositAddrNotFound',\n}\n", "import { BaseError } from './BaseError'\nimport FWErrors from './errors.json' assert { type: 'json' }\nimport { ErrorBaseType, ErrorCode, ErrorType } from './types'\nexport class ClientError extends BaseError {\n constructor(\n type: string,\n code: string,\n msg: string,\n paramsUsed: any,\n fixSuggestion: string,\n docLink: string,\n ) {\n super(\n ErrorBaseType.ClientError,\n type,\n code,\n msg,\n paramsUsed,\n fixSuggestion,\n docLink,\n false,\n )\n }\n}\n\nexport class InvalidParameterError extends ClientError {\n constructor(\n code: string,\n msg: string,\n paramsUsed: any,\n fixSuggestion: string,\n docLink: string,\n ) {\n super(\n ErrorType.InvalidParameter,\n code,\n msg,\n paramsUsed,\n fixSuggestion,\n docLink,\n )\n }\n}\n\nexport class ResourceNotFoundError extends ClientError {\n constructor(\n code: string,\n msg: string,\n paramsUsed: any,\n fixSuggestion: string,\n docLink: string,\n ) {\n if (msg.includes('Chain name not found')) {\n const { reqId } = JSON.parse(msg)\n msg = ': Chain name not found or not supported.'\n fixSuggestion = 'Change your EnvOptions to the correct chain identifier.'\n super(\n ErrorType.ResourceNotFound,\n ErrorCode.ChainNotSupported,\n msg,\n { reqId },\n fixSuggestion,\n docLink,\n )\n } else {\n super(\n ErrorType.ResourceNotFound,\n code,\n msg,\n paramsUsed,\n fixSuggestion,\n docLink,\n )\n }\n }\n}\n\nexport class InvalidActionError extends ClientError {\n constructor(\n code: string,\n msg: string,\n paramsUsed: any,\n fixSuggestion: string,\n docLink: string,\n ) {\n super(\n ErrorType.InvalidAction,\n code,\n msg,\n paramsUsed,\n fixSuggestion,\n docLink,\n )\n }\n}\n\nexport class ThrottlingError extends ClientError {\n constructor(\n code: string,\n msg: string,\n paramsUsed: any,\n fixSuggestion: string,\n docLink: string,\n ) {\n super(\n ErrorType.ThrottlingError,\n code,\n msg,\n paramsUsed,\n fixSuggestion,\n docLink,\n )\n }\n}\n\nexport class AccessDeniedError extends ClientError {\n constructor(\n code: string,\n msg: string,\n paramsUsed: any,\n fixSuggestion: string,\n docLink: string,\n ) {\n super(\n ErrorType.AccessDeniedError,\n code,\n msg,\n paramsUsed,\n fixSuggestion,\n docLink,\n )\n }\n}\n\nexport class UserOpFailureError extends ClientError {\n constructor(\n code: string,\n msg: string,\n paramsUsed: any,\n fixSuggestion: string,\n docLink: string,\n ) {\n const FWCode = findFWContractError(msg)\n if (FWCode) {\n const { reqId } = JSON.parse(msg)\n msg = FWErrors[FWCode].info\n fixSuggestion = FWErrors[FWCode].suggestion\n super(\n ErrorType.UserOpFailureError,\n ErrorCode.FunWalletErrorCode,\n msg,\n { reqId },\n fixSuggestion,\n docLink,\n )\n } else {\n super(\n ErrorType.UserOpFailureError,\n code,\n msg,\n paramsUsed,\n fixSuggestion,\n docLink,\n )\n }\n }\n}\n\nconst findFWContractError = (msg: string) => {\n let match = msg.match(/FW\\d{3}/)\n if (!match) {\n match = msg.match(/AA\\d./)\n }\n return match?.[0]\n}\n", "import { BaseError } from './BaseError'\nimport { ErrorBaseType, ErrorType } from './types'\n\nexport class ServerError extends BaseError {\n constructor(\n type: string,\n code: string,\n msg: string,\n paramsUsed: any,\n fixSuggestion: string,\n docLink: string,\n ) {\n super(\n ErrorBaseType.ServerError,\n type,\n code,\n msg,\n paramsUsed,\n fixSuggestion,\n docLink,\n true,\n )\n }\n}\n\nexport class InternalFailureError extends ServerError {\n constructor(\n code: string,\n msg: string,\n paramsUsed: any,\n fixSuggestion: string,\n docLink: string,\n ) {\n super(\n ErrorType.InternalServerFailure,\n code,\n msg,\n paramsUsed,\n fixSuggestion,\n docLink,\n )\n }\n}\n", "import { v4 as uuidv4 } from 'uuid'\nimport { Hex } from 'viem'\n// @ts-ignore\n// eslint-disable-next-line\nimport { generatePrivateKey as generateRandomPrivateKey } from \"viem/accounts\"\n\nimport { createUser, getUserUniqueId } from '../apis/UserApis'\n\nexport const getAuthUniqueId = async (\n authId: string,\n addr = 'NO_ADDRESS',\n skipDBActions = false,\n) => {\n let authUniqueId\n if (skipDBActions) {\n authUniqueId = addr\n } else {\n authUniqueId = await getUserUniqueId(authId)\n }\n if (!authUniqueId) {\n authUniqueId = uuidv4()\n }\n\n const words = authId.split('###')\n let method\n if (words[0].startsWith('0x')) {\n method = 'eoa'\n } else {\n method = words[0]\n }\n await createUser(authId, addr, method, authUniqueId)\n\n return authUniqueId\n}\n\nexport const generatePrivateKey = (): Hex => {\n return generateRandomPrivateKey()\n}\n", "import { getAssetFromFaucet } from '@funkit/api-base'\nimport {\n Address,\n concat,\n decodeAbiParameters,\n encodeAbiParameters,\n Hex,\n isAddress as isAddressViem,\n keccak256,\n pad,\n parseEther,\n PublicClient,\n toBytes,\n toHex,\n} from 'viem'\n\nimport { Auth } from '../auth'\nimport { gasSpecificChain, WALLET_CONTRACT_INTERFACE } from '../common'\nimport { EnvOption } from '../config'\nimport { Chain } from '../data'\nimport { ErrorCode, InvalidParameterError } from '../errors'\nimport { FunWallet } from '../wallet'\nimport { sendRequest } from './ApiUtils'\n\nexport const isAddress = (address: string): boolean => {\n try {\n const [decodedAddr] = decodeAbiParameters(\n [{ type: 'address' }],\n pad(address as Hex, { size: 32 }),\n )\n return isAddressViem(decodedAddr as string)\n } catch (err) {\n return false\n }\n}\n\nexport const fundWallet = async (\n auth: Auth,\n wallet: FunWallet,\n value: number,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n) => {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const chainId = await chain.getChainId()\n const to = await wallet.getAddress()\n let txData\n if ((gasSpecificChain as any)[chainId]) {\n let maxPriorityFee, maxFee\n try {\n const {\n standard: { maxPriorityFee: maxPriorityFee1, maxFee: maxFee1 },\n } = await getGasStation(gasSpecificChain[chainId].gasStationUrl)\n maxPriorityFee = maxPriorityFee1\n maxFee = maxFee1\n } catch (e) {\n maxPriorityFee = BigInt(gasSpecificChain[chainId].backupPriorityFee)\n maxFee = BigInt(gasSpecificChain[chainId].backupFee)\n }\n\n txData = {\n to,\n data: '0x',\n value: parseEther(`${value}`),\n maxFeePerGas: BigInt(Math.floor(maxPriorityFee * 1e9)),\n maxPriorityFeePerGas: BigInt(Math.floor(maxFee * 1e9)),\n }\n } else {\n txData = { to, data: '0x', value: parseEther(`${value}`) }\n }\n const receipt = await auth.sendTx({ ...txData })\n return await receipt\n}\n\nexport const isContract = async (\n address: Address,\n client: PublicClient,\n): Promise<boolean> => {\n try {\n const code = await client.getBytecode({ address })\n return !!code\n } catch (error) {\n return false\n }\n}\n\nexport const randomBytes = (length: number) => {\n const bytes = new Uint8Array(length)\n for (let i = 0; i < length; i++) {\n bytes[i] = Math.floor(Math.random() * 256)\n }\n\n return toHex(bytes)\n}\n\nexport const getWalletPermitNonce = async (\n walletAddr: Address,\n chain: Chain,\n nonceKey = 0,\n) => {\n try {\n return await WALLET_CONTRACT_INTERFACE.readFromChain(\n walletAddr,\n 'getNonce',\n [nonceKey],\n chain,\n )\n } catch (e) {\n return 0\n }\n}\n\nexport const getPermitHash = (\n token: Address,\n to: Address,\n amount: bigint,\n nonce: bigint,\n walletAddr: Address,\n chainId: bigint,\n) => {\n const salt = keccak256(toBytes('Create3Deployer.deployers()'))\n const EIP712_DOMAIN = keccak256(\n encodeAbiParameters(\n [{ type: 'string' }],\n [\n 'EIP712Domain(string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)',\n ],\n ),\n )\n const PERMIT_TYPEHASH =\n 'PermitTransferStruct(address token, address to, uint256 amount, uint256 nonce)'\n const DOMAIN_SEPARATOR = keccak256(\n encodeAbiParameters(\n [\n { type: 'bytes32' },\n { type: 'bytes32' },\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'bytes32' },\n ],\n [EIP712_DOMAIN, salt, keccak256(toBytes('1')), chainId, walletAddr, salt],\n ),\n )\n const PERMIT_HASH = keccak256(\n encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'address' },\n { type: 'address' },\n { type: 'uint256' },\n { type: 'uint256' },\n ],\n [PERMIT_TYPEHASH, token, to, amount, nonce],\n ),\n )\n return keccak256(concat([DOMAIN_SEPARATOR, PERMIT_HASH]))\n}\n\nexport const getGasStation = async (gasStationUrl: string): Promise<any> => {\n return await sendRequest(gasStationUrl, 'GET', '')\n}\n\nexport const useFaucet = async (\n chainIdentifier: Chain | number | string,\n wallet: FunWallet,\n) => {\n const chain = await Chain.getChain({ chainIdentifier })\n const chainName = await chain.getChainName()\n if (chainName !== 'goerli') {\n throw new InvalidParameterError(\n ErrorCode.InvalidChainIdentifier,\n 'Only Goerli is supported',\n chainIdentifier,\n 'Provide the goerli chain, 5, or goerli as the chain identifier',\n 'https://docs.fun.xyz/',\n )\n }\n const walletAddress = await wallet.getAddress()\n const [ethRequest, usdcRequest, usdtRequest, daiRequest] = await Promise.all([\n getAssetFromFaucet({\n token: 'eth',\n chain: chainName,\n walletAddress,\n apiKey: (globalThis as any).globalEnvOption.apiKey,\n }),\n getAssetFromFaucet({\n token: 'usdc',\n chain: chainName,\n walletAddress,\n apiKey: (globalThis as any).globalEnvOption.apiKey,\n }),\n getAssetFromFaucet({\n token: 'usdt',\n chain: chainName,\n walletAddress,\n apiKey: (globalThis as any).globalEnvOption.apiKey,\n }),\n getAssetFromFaucet({\n token: 'dai',\n chain: chainName,\n walletAddress,\n apiKey: (globalThis as any).globalEnvOption.apiKey,\n }),\n ])\n return [ethRequest, usdcRequest, usdtRequest, daiRequest]\n}\n", "import { Address } from 'viem'\n\nimport {\n dydxChain,\n FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS,\n FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO,\n} from '../common'\nimport { Chain, Token } from '../data'\nimport { randomBytes } from './ChainUtils'\n\nexport async function getDecimals({\n chainId,\n tokenAddress,\n}: {\n chainId: string\n tokenAddress: Address\n}): Promise<number> {\n // If tokenAddress is a known native currency address, check against funkitconnect supported chains mapping\n if (tokenAddress === FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS) {\n // Assumption here is the chainId is some supported chainId in FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO already\n // TODO: Validation / error handling\n return FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO[chainId].nativeCurrency.decimals\n }\n\n // Dydx handling - we only support noble usdc\n if (\n chainId === dydxChain.id.toString() &&\n FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO[chainId]\n .checkoutAssetWhitelist?.[0] === tokenAddress.toLowerCase()\n ) {\n return 6\n }\n\n // Find ERC-20 tokenAddress\n const chain = await Chain.getChain({ chainIdentifier: chainId })\n const token = new Token(tokenAddress, chain)\n return Number(await token.getDecimals())\n}\n\nexport function generateRandomCheckoutSalt() {\n return BigInt(randomBytes(32))\n}\n\nexport function roundToNearestBottomTenth(n: number) {\n return Math.floor(n / 10) * 10\n}\n", "import { EnvOption } from '../config'\nimport { PaymasterType } from '../sponsors/types'\n\nexport const getPaymasterType = (txOptions: EnvOption) => {\n if (txOptions.gasSponsor?.useCheckoutSponsor) {\n return PaymasterType.CheckoutSponsor\n } else if (\n txOptions.gasSponsor?.sponsorAddress &&\n txOptions.gasSponsor?.token\n ) {\n return PaymasterType.TokenSponsor\n } else if (txOptions.gasSponsor?.sponsorAddress) {\n return PaymasterType.GaslessSponsor\n } else {\n throw Error('Invalid paymaster type')\n }\n}\n", "import { JSBI } from '@uniswap/sdk'\nimport {\n Currency,\n CurrencyAmount,\n Percent,\n Token,\n TradeType,\n} from '@uniswap/sdk-core'\nimport {\n computePoolAddress,\n FeeAmount,\n Pool,\n Route,\n SwapQuoter,\n SwapRouter,\n Trade,\n} from '@uniswap/v3-sdk'\nimport {\n Address,\n decodeAbiParameters,\n Hex,\n parseUnits,\n PublicClient,\n} from 'viem'\n\nimport { UniswapPoolFeeOptions } from '../actions'\nimport { getTokenInfo } from '../apis'\nimport {\n ERC20_CONTRACT_INTERFACE,\n POOL_CONTRACT_INTERFACE,\n UNISWAPV2ROUTER02_INTERFACE,\n} from '../common'\n\nexport function fromReadableAmount(amount: number, decimals: number) {\n return parseUnits(amount.toFixed(20) as `${number}`, decimals)\n}\n\nclass SwapToken {\n client: PublicClient\n version: 2 | 3\n quoterContractAddr?: Address\n poolFactoryContractAddr?: string\n v2router?: string\n v2Factory?: string\n\n constructor(\n client: PublicClient,\n version: 2 | 3,\n quoterContractAddr?: Address,\n poolFactoryContractAddr?: string,\n v2router?: string,\n v2Factory?: string,\n ) {\n this.client = client\n this.version = version\n if (version === 3) {\n if (\n quoterContractAddr !== undefined &&\n poolFactoryContractAddr !== undefined\n ) {\n this.quoterContractAddr = quoterContractAddr\n this.poolFactoryContractAddr = poolFactoryContractAddr\n } else {\n throw new Error(\n 'quoterContractAddr and poolFactoryContractAddr must be provided',\n )\n }\n } else if (version === 2) {\n if (v2router !== undefined && v2Factory !== undefined) {\n this.v2Factory = v2Factory\n this.v2router = v2router\n } else {\n throw new Error('v2quoter and v2Factory must be provided')\n }\n } else {\n throw new Error('Invalid version')\n }\n }\n\n async getOutputQuote(\n route: Route<Currency, Currency>,\n token0: Token,\n amountIn: number,\n ): Promise<bigint> {\n const { calldata } = await SwapQuoter.quoteCallParameters(\n route,\n CurrencyAmount.fromRawAmount(\n token0,\n fromReadableAmount(amountIn, token0.decimals).toString(),\n ),\n TradeType.EXACT_INPUT,\n {\n useQuoterV2: true,\n },\n )\n\n const quoteCallReturnData = await this.client.call({\n to: this.quoterContractAddr,\n data: calldata as Hex,\n })\n if (!quoteCallReturnData.data) {\n throw new Error('No data returned from quote call')\n }\n return decodeAbiParameters(\n [{ name: 'return', type: 'uint256' }],\n quoteCallReturnData.data,\n )[0] as bigint\n }\n\n async getPoolInfo(tokenIn: Token, tokenOut: Token, poolFee: FeeAmount) {\n const currentPoolAddress = computePoolAddress({\n factoryAddress: this.poolFactoryContractAddr!,\n tokenA: tokenIn,\n tokenB: tokenOut,\n fee: poolFee,\n })\n const [token0, token1, fee, tickSpacing, liquidity, slot0] =\n await POOL_CONTRACT_INTERFACE.batchReadFromChain(\n currentPoolAddress as Address,\n this.client,\n [\n {\n functionName: 'token0',\n },\n {\n functionName: 'token1',\n },\n {\n functionName: 'fee',\n },\n {\n functionName: 'tickSpacing',\n },\n {\n functionName: 'liquidity',\n },\n {\n functionName: 'slot0',\n },\n ],\n )\n\n return {\n token0,\n token1,\n fee,\n tickSpacing,\n liquidity,\n sqrtPriceX96: slot0[0],\n tick: slot0[1],\n }\n }\n\n async getTokenDecimals(tokenAddr: Address) {\n return await ERC20_CONTRACT_INTERFACE.readFromChain(\n tokenAddr,\n 'decimals',\n [],\n this.client,\n )\n }\n\n async createTrade(\n amountIn: number,\n tokenIn: Token,\n tokenOut: Token,\n poolFee: FeeAmount,\n ) {\n const poolInfo = await this.getPoolInfo(tokenIn, tokenOut, poolFee)\n const pool = new Pool(\n tokenIn,\n tokenOut,\n poolFee,\n poolInfo.sqrtPriceX96.toString(),\n poolInfo.liquidity.toString(),\n poolInfo.tick,\n )\n const swapRoute = new Route([pool], tokenIn, tokenOut)\n\n const amountOut = await this.getOutputQuote(swapRoute, tokenIn, amountIn)\n const tokenInAmount = fromReadableAmount(\n amountIn,\n tokenIn.decimals,\n ).toString()\n const uncheckedTrade = Trade.createUncheckedTrade({\n route: swapRoute,\n inputAmount: CurrencyAmount.fromRawAmount(tokenIn, tokenInAmount),\n outputAmount: CurrencyAmount.fromRawAmount(\n tokenOut,\n JSBI.BigInt(amountOut.toString()),\n ),\n tradeType: TradeType.EXACT_INPUT,\n })\n\n return { uncheckedTrade, tokenInAmount }\n }\n\n async createTradeV2(\n amountIn: number,\n tokenIn: Token,\n tokenOut: Token,\n poolFee: FeeAmount,\n ) {\n const poolInfo = await this.getPoolInfo(tokenIn, tokenOut, poolFee)\n const pool = new Pool(\n tokenIn,\n tokenOut,\n poolFee,\n poolInfo.sqrtPriceX96.toString(),\n poolInfo.liquidity.toString(),\n poolInfo.tick,\n )\n const swapRoute = new Route([pool], tokenIn, tokenOut)\n\n const amountOut = await this.getOutputQuote(swapRoute, tokenIn, amountIn)\n const tokenInAmount = fromReadableAmount(\n amountIn,\n tokenIn.decimals,\n ).toString()\n const uncheckedTrade = Trade.createUncheckedTrade({\n route: swapRoute,\n inputAmount: CurrencyAmount.fromRawAmount(tokenIn, tokenInAmount),\n outputAmount: CurrencyAmount.fromRawAmount(\n tokenOut,\n JSBI.BigInt(amountOut.toString()),\n ),\n tradeType: TradeType.EXACT_INPUT,\n })\n\n return { uncheckedTrade, tokenInAmount }\n }\n\n executeTrade(\n trade: Trade<Currency, Currency, TradeType>,\n routerAddr: string,\n walletAddress: string,\n slippage = 5000,\n percentDec = 10000,\n ) {\n const options = {\n slippageTolerance: new Percent(slippage, percentDec), // 50 bips, or 0.50%\n deadline: Date.now() + 1800, // 20 minutes from the current Unix time\n recipient: walletAddress,\n }\n\n const { calldata, value } = SwapRouter.swapCallParameters(trade, options)\n return {\n data: calldata,\n to: routerAddr,\n value,\n }\n }\n}\n\nconst fees = {\n lowest: FeeAmount.LOWEST,\n low: FeeAmount.LOW,\n medium: FeeAmount.MEDIUM,\n high: FeeAmount.HIGH,\n}\n\ntype SwapParamsUtils = {\n tokenInAddress: Address\n tokenOutAddress: Address\n amountIn: number\n recipient: Address\n percentDecimal: number\n slippage: number\n poolFee: UniswapPoolFeeOptions\n}\n\nexport type UniswapV3Addrs = {\n univ3quoter: Address\n univ3factory: Address\n univ3router: Address\n}\nexport type UniswapV2Addrs = {\n factory: Address\n router: Address\n}\nexport async function swapExec(\n client: PublicClient,\n uniswapAddrs: UniswapV3Addrs,\n swapParams: SwapParamsUtils,\n chainId: number,\n) {\n const { univ3quoter, univ3factory, univ3router } = uniswapAddrs\n\n const {\n tokenInAddress,\n tokenOutAddress,\n amountIn,\n recipient,\n percentDecimal,\n slippage,\n poolFee,\n } = swapParams\n const _poolFee = fees[poolFee]\n\n const swapper = new SwapToken(client, 3, univ3quoter, univ3factory)\n const tokenInDecimal = await swapper.getTokenDecimals(tokenInAddress)\n const tokenOutDecimal = await swapper.getTokenDecimals(tokenOutAddress)\n\n const tokenIn = new Token(chainId, tokenInAddress, tokenInDecimal)\n const tokenOut = new Token(chainId, tokenOutAddress, tokenOutDecimal)\n\n const { uncheckedTrade, tokenInAmount } = await swapper.createTrade(\n amountIn,\n tokenIn,\n tokenOut,\n _poolFee,\n )\n const data = swapper.executeTrade(\n uncheckedTrade,\n univ3router,\n recipient,\n slippage,\n percentDecimal,\n )\n return { ...data, amount: tokenInAmount }\n}\n\nexport async function swapExecV2(\n client: PublicClient,\n uniswapAddrs: UniswapV2Addrs,\n swapParams: SwapParamsUtils,\n chainId: number,\n) {\n const { router, factory } = uniswapAddrs\n\n const { tokenInAddress, tokenOutAddress, amountIn, recipient } = swapParams\n\n const swapper = new SwapToken(\n client,\n 2,\n undefined,\n undefined,\n router,\n factory,\n )\n const tokenInDecimal = await swapper.getTokenDecimals(tokenInAddress)\n const wethAddr = await getTokenInfo('weth', chainId.toString())\n let swapTxData\n if (wethAddr === tokenOutAddress) {\n swapTxData = UNISWAPV2ROUTER02_INTERFACE.encodeTransactionParams(\n router,\n 'swapExactTokensForETH',\n [\n fromReadableAmount(amountIn, tokenInDecimal).toString(),\n 0,\n [tokenInAddress, tokenOutAddress],\n recipient,\n Date.now() + 180000, // Long enough to rarely fail\n ],\n )\n return {\n data: swapTxData.data,\n to: swapTxData.to,\n amount: fromReadableAmount(amountIn, tokenInDecimal).toString(),\n }\n } else {\n swapTxData = UNISWAPV2ROUTER02_INTERFACE.encodeTransactionParams(\n router,\n 'swapExactTokensForTokens',\n [\n fromReadableAmount(amountIn, tokenInDecimal).toString(),\n 0,\n [tokenInAddress, tokenOutAddress],\n recipient,\n Date.now() + 180000, // Long enough to rarely fail\n ],\n )\n return {\n data: swapTxData.data,\n to: swapTxData.to,\n amount: fromReadableAmount(amountIn, tokenInDecimal).toString(),\n }\n }\n}\n", "import {\n encodeAbiParameters,\n formatUnits,\n Hex,\n keccak256,\n toBytes,\n toHex,\n} from 'viem'\n\nimport { ENTRYPOINT_CONTRACT_INTERFACE } from '../common'\nimport { Chain, UserOperation } from '../data'\nimport { sendRequest } from './ApiUtils'\n\nexport const calcPreVerificationGas = (userOp: UserOperation): bigint => {\n const ov = DefaultGasOverheads\n const p = Object.assign(\n {\n preVerificationGas: 28000,\n signature: toHex(Buffer.alloc(ov.sigSize, 1)),\n },\n userOp,\n )\n const packed = toBytes(packUserOp(p, false))\n const callDataCost = packed\n .map((x) => (x === 0 ? ov.zeroByte : ov.nonZeroByte))\n .reduce((sum, x) => sum + x)\n const ret = Math.round(\n callDataCost +\n ov.fixed / ov.bundleSize +\n ov.perUserOp +\n ov.perUserOpWord * packed.length,\n )\n return BigInt(ret)\n}\n\nfunction encode(typevalues: any, forSignature: any) {\n const types = typevalues.map((typevalue: any) =>\n typevalue.type === 'bytes' && forSignature ? 'bytes32' : typevalue.type,\n )\n const values = typevalues.map((typevalue: any) =>\n typevalue.type === 'bytes' && forSignature\n ? keccak256(typevalue.val)\n : typevalue.val,\n )\n\n return encodeAbiParameters(types, values)\n}\n\nfunction packUserOp(op: any, forSignature = true) {\n if (forSignature) {\n let encoded = encodeAbiParameters(\n [userOpTypeSig as any],\n [{ ...op, signature: '0x' }],\n )\n encoded = ('0x' + encoded.slice(66, encoded.length - 64)) as Hex\n return encoded\n }\n const typevalues = UserOpType.components.map((c) => ({\n type: c.type,\n val: op[c.name],\n }))\n return encode(typevalues, forSignature)\n}\n\nexport const getPromiseFromOp = async (op: UserOperation) => {\n const out: any = {}\n await Promise.all(\n Object.keys(op).map(async (key) => {\n out[key] = await (op as any)[key]\n }),\n )\n return out\n}\n\nexport async function gasCalculation(txid: string, chain: Chain) {\n if (!txid || txid === '0x')\n return { gasUsed: '-1', opFee: '-1', opFeeUSD: '-1' }\n const provider = await chain.getClient()\n const txReceipt = await provider.waitForTransactionReceipt({\n hash: txid as Hex,\n })\n const gasUsed = txReceipt.gasUsed\n const gasPrice = txReceipt.effectiveGasPrice\n const opFee = gasUsed * gasPrice\n const chainPrice = BigInt(\n Math.ceil((await getPriceData(await chain.getCurrency())) * 100),\n )\n // @ts-ignore\n // eslint-disable-next-line\n const opFeeUSD = opFee * BigInt(chainPrice)\n\n return {\n gasUsed: gasUsed.toString(),\n opFee: formatUnits(opFee, 18).toString(),\n opFeeUSD: formatUnits(opFeeUSD, 20).toString(),\n }\n}\n\nconst PRICE_URL = 'https://min-api.cryptocompare.com/data/price'\n\nasync function getPriceData(chainCurrency: string): Promise<number> {\n const data = await sendRequest(\n `${PRICE_URL}?fsym=${chainCurrency}&tsyms=USD`,\n 'GET',\n '',\n {},\n )\n return data.USD\n}\n\nexport const stringify = (object: any) => {\n return JSON.stringify(\n object,\n (_, value) => (typeof value === 'bigint' ? toHex(value) : value), // return everything else unchanged\n )\n}\n\nexport const objectify = (op: any): any => {\n return JSON.parse(stringify(op))\n}\n\n// Constants\n\nconst DefaultGasOverheads = {\n fixed: 28000,\n perUserOp: 18300,\n perUserOpWord: 4,\n zeroByte: 4,\n nonZeroByte: 16,\n bundleSize: 1,\n sigSize: 65,\n}\n\nconst UserOpType = {\n components: [\n { internalType: 'address', name: 'sender', type: 'address' },\n { internalType: 'uint256', name: 'nonce', type: 'uint256' },\n { internalType: 'bytes', name: 'initCode', type: 'bytes' },\n { internalType: 'bytes', name: 'callData', type: 'bytes' },\n { internalType: 'uint256', name: 'callGasLimit', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'verificationGasLimit',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'preVerificationGas',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'maxFeePerGas', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'maxPriorityFeePerGas',\n type: 'uint256',\n },\n { internalType: 'bytes', name: 'paymasterAndData', type: 'bytes' },\n { internalType: 'bytes', name: 'signature', type: 'bytes' },\n ],\n internalType: 'struct UserOperation',\n name: 'userOp',\n type: 'tuple',\n}\n\nconst userOpTypeSig = {\n components: [\n {\n type: 'address',\n name: 'sender',\n },\n {\n type: 'uint256',\n name: 'nonce',\n },\n {\n type: 'bytes',\n name: 'initCode',\n },\n {\n type: 'bytes',\n name: 'callData',\n },\n {\n type: 'uint256',\n name: 'callGasLimit',\n },\n {\n type: 'uint256',\n name: 'verificationGasLimit',\n },\n {\n type: 'uint256',\n name: 'preVerificationGas',\n },\n {\n type: 'uint256',\n name: 'maxFeePerGas',\n },\n {\n type: 'uint256',\n name: 'maxPriorityFeePerGas',\n },\n {\n type: 'bytes',\n name: 'paymasterAndData',\n },\n {\n type: 'bytes',\n name: 'signature',\n },\n ],\n name: 'userOp',\n type: 'tuple',\n}\n\nexport async function getOpHash(\n chain: Chain,\n userOp: UserOperation,\n): Promise<Hex> {\n const entryPointAddress = await chain.getAddress('entryPointAddress')\n return await ENTRYPOINT_CONTRACT_INTERFACE.readFromChain(\n entryPointAddress,\n 'getUserOpHash',\n [userOp],\n chain,\n )\n}\n", "import { v4 as uuidv4 } from 'uuid'\nimport { Address, Hex, keccak256, pad, toBytes } from 'viem'\n\nimport { FACTORY_CONTRACT_INTERFACE } from '../common'\nimport {\n AuthType,\n Chain,\n encodeLoginData,\n Operation,\n Signature,\n UserOperation,\n} from '../data'\nimport { randomBytes } from './ChainUtils'\n\nexport const generateRandomBytes32 = (): Hex => {\n return keccak256(toBytes(uuidv4())) as Hex\n}\n\nexport const generateRandomWalletUniqueId = (): Hex => {\n return generateRandomBytes32()\n}\n\nexport const generateRandomGroupId = (): Hex => {\n return generateRandomBytes32()\n}\n\nexport const generateRoleId = (): Hex => {\n return generateRandomBytes32()\n}\n\nexport const generateRuleId = (): Hex => {\n return generateRandomBytes32()\n}\n\nexport const generateRandomNonceKey = (): bigint => {\n return BigInt(randomBytes(24))\n}\n\nexport const generateRandomNonce = (): bigint => {\n const randomKey = generateRandomNonceKey()\n return randomKey << 64n\n}\n\nexport const getWalletAddress = async (\n chain: Chain,\n walletUniqueId: Hex,\n): Promise<Address> => {\n const data = encodeLoginData({ salt: walletUniqueId })\n const factoryAddress = await chain.getAddress('factoryAddress')\n return await FACTORY_CONTRACT_INTERFACE.readFromChain(\n factoryAddress,\n 'getAddress',\n [data],\n chain,\n )\n}\n\nexport const isWalletInitOp = (userOp: UserOperation): boolean => {\n return userOp.initCode !== '0x'\n}\n\nexport const isGroupOperation = (operation: Operation): boolean => {\n if (operation.groupId && operation.authType === AuthType.MULTI_SIG) {\n return true\n }\n return false\n}\n\nexport const isSignatureMissing = (\n userId: Hex,\n signatures: Signature[] | undefined,\n): boolean => {\n if (!signatures) {\n return true\n }\n let sigMissing = true\n for (const signature of signatures) {\n if (\n pad(signature.userId.toLowerCase() as Hex, { size: 32 }) ===\n pad(userId.toLowerCase() as Hex, { size: 32 })\n ) {\n sigMissing = false\n break\n }\n }\n return sigMissing\n}\n", "import { API_URL } from '../common/constants'\nimport { sendGetRequest } from '../utils/ApiUtils'\n\nexport async function getContractAbi(\n contractName: string,\n mode = 'abi',\n): Promise<any> {\n const { name, abi, addresses } = await sendGetRequest(\n API_URL,\n `contract/${contractName}?mode=${mode}`,\n )\n return { name, abi, addresses }\n}\n", "import { Address, Hex } from 'viem'\n\nimport { API_URL } from '../common/constants'\nimport { sendPostRequest } from '../utils/ApiUtils'\nimport { GroupMetadata } from './types'\n\nexport async function getGroups(\n groupIds: Hex[],\n chainId: string,\n): Promise<GroupMetadata[]> {\n return (\n await sendPostRequest(API_URL, 'group/get-groups', {\n groupIds,\n chainId,\n })\n ).groups\n}\n\nexport async function getGroupsByWallet(\n walletAddr: Address,\n chainId: string,\n): Promise<GroupMetadata[]> {\n return (\n await sendPostRequest(\n API_URL,\n `group/wallet/${walletAddr}/chain/${chainId}`,\n {\n walletAddr,\n chainId,\n },\n )\n ).groups\n}\n", "import { Address } from 'viem'\n\nimport { API_URL, BASE_WRAP_TOKEN_ADDR } from '../common/constants'\nimport { ErrorCode, ResourceNotFoundError } from '../errors'\nimport { sendGetRequest, sendPostRequest } from '../utils/ApiUtils'\n\nexport async function getTokenInfo(\n symbol: string,\n chainId: string,\n): Promise<Address> {\n symbol = symbol.toLowerCase()\n const body = {\n symbol,\n chain: chainId,\n }\n if (\n symbol === 'weth' &&\n chainId !== '137' &&\n Object.keys(BASE_WRAP_TOKEN_ADDR).includes(chainId)\n ) {\n return (BASE_WRAP_TOKEN_ADDR as any)[chainId][symbol]\n } else if (symbol === 'wmatic' && chainId === '137') {\n return (BASE_WRAP_TOKEN_ADDR as any)[chainId][symbol]\n }\n\n const tokenInfo = await sendGetRequest(\n API_URL,\n `asset/erc20/${body.chain}/${body.symbol}`,\n )\n\n if (tokenInfo.address) {\n return tokenInfo.address\n }\n throw new ResourceNotFoundError(\n ErrorCode.TokenNotFound,\n 'token symbol does not exist on provided chain',\n { symbol, chainId },\n 'Provide correct symbol and chainId.',\n 'https://docs.fun.xyz',\n )\n}\n\nexport async function getChainFromId(chainId: string): Promise<any> {\n return await sendGetRequest(API_URL, `chain-info/${chainId}`).then((r) => {\n if (!r) {\n throw new Error(JSON.stringify(r))\n }\n return r\n })\n}\n\nexport async function getChainFromName(name: string): Promise<any> {\n return await sendGetRequest(API_URL, `chain-info?name=${name}`).then((r) => {\n if (!r) {\n throw new Error(JSON.stringify(r))\n }\n return r\n })\n}\n\nexport async function getModuleInfo(\n moduleName: string,\n chainId: string,\n): Promise<any> {\n const body = {\n module: moduleName,\n chain: chainId,\n }\n\n return await sendPostRequest(API_URL, 'get-module-info', body).then((r) => {\n return r.data\n })\n}\n\nexport async function getPaymasterAddress(chainId: string): Promise<any> {\n const {\n moduleAddresses: {\n paymaster: { paymasterAddress },\n },\n } = await getChainFromId(chainId)\n\n return paymasterAddress\n}\n", "import { API_URL } from '../common/constants'\nimport { sendGetRequest } from '../utils/ApiUtils'\n\n/**\n * Get the name of an NFT collection\n * @param {string} chainId https://chainlist.org/\n * @param {string} nftAddress Address of NFT\n * @returns JSON\n * {\n * \"success\": true,\n * \"name\": \"Anatomy Science Ape Club\"\n * }\n */\nexport async function getNftName(\n chainId: string,\n nftAddress: string,\n): Promise<any> {\n return await sendGetRequest(API_URL, `asset/nft/${chainId}/${nftAddress}`)\n}\n\n/**\n * Get the address and chainId of an NFT collection\n * @param {string} name Name of NFT\n * @returns JSON\n * {\n * \"success\": true,\n * \"address\": \"0x96fc56721d2b79485692350014875b3b67cb00eb\",\n * \"chain\": \"1\"\n * }\n */\nexport async function getNftAddress(name: string): Promise<any> {\n return await sendGetRequest(API_URL, `asset/nft?name=${name}`)\n}\n", "import { Address, Hex } from 'viem'\n\nimport { API_URL } from '../common/constants'\nimport { ExecutionReceipt } from '../common/types'\nimport { Operation, OperationStatus } from '../data'\nimport {\n sendDeleteRequest,\n sendGetRequest,\n sendPostRequest,\n} from '../utils/ApiUtils'\nimport {\n EstimatedGas,\n EstimateOpInput,\n ExecuteOpInput,\n ScheduleOpInput,\n UserOperationGasPrice,\n} from './types'\n\nexport async function createOp(op: Operation): Promise<string> {\n return (await sendPostRequest(API_URL, 'operation', { ...op })).opId\n}\n\nexport async function getOpsOfGroup(\n groupId: Hex,\n chainId: string,\n status: OperationStatus,\n): Promise<Operation[]> {\n const endpoint =\n status === OperationStatus.ALL\n ? `operation/group/${groupId}/${chainId}`\n : `operation/group/${groupId}/chain/${chainId}?status=${status}`\n return (await sendGetRequest(API_URL, endpoint)).operations\n}\n\nexport async function getOpsOfWallet(\n walletAddr: Address,\n chainId: string,\n status?: OperationStatus,\n): Promise<Operation[]> {\n const endpoint = status\n ? `operation/wallet/${walletAddr}/chain/${chainId}?status=${status}`\n : `operation/wallet/${walletAddr}/chain/${chainId}`\n return (await sendGetRequest(API_URL, endpoint)).operations\n}\n\nexport async function getOps(\n opIds: Hex[],\n chainId: string,\n): Promise<Operation[]> {\n return (\n await sendPostRequest(API_URL, 'operation/get-operations', {\n opIds,\n chainId,\n })\n ).operations\n}\n\nexport async function deleteOp(opId: Hex, chainId: string): Promise<void> {\n await sendDeleteRequest(API_URL, `operation/${opId}/chain/${chainId}`)\n}\n\nexport async function signOp(\n opId: Hex,\n chainId: string,\n signature: Hex,\n signedBy: Address,\n threshold?: number,\n): Promise<void> {\n await sendPostRequest(API_URL, 'operation/sign', {\n opId,\n chainId,\n signature,\n signedBy,\n threshold,\n })\n}\n\nexport async function executeOp(\n executeOpInput: ExecuteOpInput,\n): Promise<ExecutionReceipt> {\n return await sendPostRequest(API_URL, 'operation/execute', executeOpInput)\n}\n\nexport async function estimateOp(\n estimateOpInput: EstimateOpInput,\n): Promise<EstimatedGas> {\n return await sendPostRequest(API_URL, 'operation/estimate', estimateOpInput)\n}\n\nexport async function scheduleOp(\n scheduleOpInput: ScheduleOpInput,\n): Promise<void> {\n await sendPostRequest(API_URL, 'operation/schedule', scheduleOpInput)\n}\n\nexport const getFullReceipt = async (\n opId,\n chainId,\n userOpHash,\n): Promise<ExecutionReceipt> => {\n const retries = 20\n let result: any\n for (let i = 0; i < retries; i++) {\n try {\n result = await sendGetRequest(\n API_URL,\n `operation/${opId}/chain/${chainId}/receipt?userOpHash=${userOpHash}`,\n )\n if (result.status === 'included') {\n break\n }\n } catch (e) {\n /* empty */\n }\n\n await new Promise((resolve) => setTimeout(resolve, 2500))\n }\n if (!result.receipt) {\n result.receipt = {\n txId: 'Failed to find.',\n gasUsed: 'Failed to find.',\n opFeeUSD: 'Failed to find.',\n opFee: 'Failed to find.',\n }\n }\n return {\n ...result.receipt,\n }\n}\n\nexport const getGasPrice = async (\n chainId: string,\n): Promise<UserOperationGasPrice> => {\n return await sendGetRequest(API_URL, `operation/chain/${chainId}/gas-price`)\n}\n", "import { DASHBOARD_API_URL } from '../common/constants'\nimport { PaymasterType } from '../sponsors/types'\nimport { sendPostRequest } from '../utils/ApiUtils'\nexport interface PaymasterTransaction {\n action: string\n amount: number\n from: string\n to: string\n token: string\n txid?: string\n}\n\nexport async function addTransaction(\n chainId: string,\n timestamp: number,\n txid,\n transaction: PaymasterTransaction,\n paymasterType: PaymasterType,\n sponsorAddress: string,\n): Promise<any> {\n try {\n return await sendPostRequest(\n DASHBOARD_API_URL,\n 'paymasters/add-transaction',\n {\n chain: chainId,\n sponsorAddress,\n type: paymasterType,\n timestamp,\n transaction,\n txid,\n },\n )\n } catch (e) {\n /* empty */\n }\n}\n", "import { Address, isAddress } from 'viem'\n\nimport { getNftAddress, getNftName } from '../apis/NFTApis'\nimport { ERC721_CONTRACT_INTERFACE, TransactionData } from '../common'\nimport { EnvOption } from '../config'\nimport { ErrorCode, InvalidParameterError } from '../errors'\nimport { Chain } from './Chain'\n\nexport class NFT {\n address?: Address\n name = ''\n\n constructor(input: string) {\n if (!input) {\n throw new InvalidParameterError(\n ErrorCode.InvalidNFTIdentifier,\n 'valid NFT identifier is required, could be address or name',\n { input },\n 'Please provide valid NFT identifier',\n 'https://docs.fun.xyz',\n )\n }\n\n if (isAddress(input)) {\n this.address = input\n } else {\n this.name = input\n }\n }\n\n async approve(\n spender: string,\n tokenId: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionData> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const data = ERC721_CONTRACT_INTERFACE.encodeTransactionParams(\n await this.getAddress(),\n 'approve',\n [spender, tokenId],\n )\n return { ...data, chain }\n }\n\n async ownerOf(\n tokenId: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Address> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await ERC721_CONTRACT_INTERFACE.readFromChain(\n await this.getAddress(),\n 'ownerOf',\n [tokenId],\n chain,\n )\n }\n\n async approveForAll(\n spender: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<any> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const data = ERC721_CONTRACT_INTERFACE.encodeTransactionParams(\n await this.getAddress(),\n 'setApprovalForAll',\n [spender, true],\n )\n return { ...data, chain }\n }\n\n async getAddress(): Promise<Address> {\n if (!this.address) {\n if (!this.name) {\n throw new InvalidParameterError(\n ErrorCode.InvalidNFTIdentifier,\n 'valid NFT identifier is required, could be address or name',\n {},\n 'Please provide valid NFT identifier',\n 'https://docs.fun.xyz',\n )\n }\n const nft = await getNftAddress(this.name)\n return nft.address\n } else {\n return this.address\n }\n }\n\n async getName(\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<string> {\n if (!this.name && this.address) {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const nft = await getNftName(await chain.getChainId(), this.address)\n return nft.name\n }\n return this.name\n }\n\n async getBalance(\n address: Address,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<bigint> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await ERC721_CONTRACT_INTERFACE.readFromChain(\n await this.getAddress(),\n 'balanceOf',\n [address],\n chain,\n )\n }\n\n async getApproved(\n tokenId: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Address> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await ERC721_CONTRACT_INTERFACE.readFromChain(\n await this.getAddress(),\n 'getApproved',\n [tokenId],\n chain,\n )\n }\n\n async revokeForAll(\n spender: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionData> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const data = ERC721_CONTRACT_INTERFACE.encodeTransactionParams(\n await this.getAddress(),\n 'setApprovalForAll',\n [spender, false],\n )\n return { ...data, chain }\n }\n\n async transfer(\n sender: string,\n spender: string,\n tokenId: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<any> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const data = ERC721_CONTRACT_INTERFACE.encodeTransactionParams(\n await this.getAddress(),\n 'transferFrom',\n [sender, spender, tokenId],\n )\n return { ...data, chain }\n }\n\n static async approve(\n data: string,\n spender: string,\n tokenId: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionData> {\n const nft = new NFT(data)\n return await nft.approve(spender, tokenId, options)\n }\n\n static async approveForAll(\n data: string,\n spender: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionData> {\n const nft = new NFT(data)\n return await nft.approveForAll(spender, options)\n }\n\n static async getAddress(data: string): Promise<string> {\n const nft = new NFT(data)\n return await nft.getAddress()\n }\n\n static async getApproved(\n data: string,\n tokenId: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<string> {\n const nft = new NFT(data)\n return await nft.getApproved(tokenId, options)\n }\n\n static async revokeForAll(\n data: string,\n spender: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionData> {\n const nft = new NFT(data)\n return await nft.revokeForAll(spender, options)\n }\n\n static async transfer(\n data: string,\n sender: string,\n spender: string,\n tokenId: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionData> {\n const nft = new NFT(data)\n return await nft.transfer(sender, spender, tokenId, options)\n }\n\n static async ownerOf(\n data: string,\n tokenId: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Address> {\n const nft = new NFT(data)\n return await nft.ownerOf(tokenId, options)\n }\n}\n", "import { Address, Hex } from 'viem'\n\nimport { Auth } from '../auth'\nimport { ENTRYPOINT_CONTRACT_INTERFACE } from '../common/constants'\nimport { EnvOption } from '../config'\nimport { calcPreVerificationGas } from '../utils'\nimport { Chain } from './Chain'\nimport {\n AuthType,\n OperationMetadata,\n OperationStatus,\n OperationType,\n Signature,\n UserOperation,\n} from './types'\n\nexport class Operation {\n opId?: Hex\n chainId: string\n opType: OperationType\n authType: AuthType\n groupId?: Hex\n message?: string\n walletAddr: Address\n userOp: UserOperation\n status?: OperationStatus\n proposer: string // do not use address in case we later use non-address data as the proposer\n proposedTime?: number\n executedBy?: string\n executedTime?: number\n relatedOpIds?: Hex[]\n signatures?: Signature[]\n txid?: string\n gasUsed?: string\n opFeeUSD?: string\n opFee?: string\n executedBlockNumber?: number\n executedBlockTimeStamp?: number\n\n constructor(userOp: UserOperation, metadata: OperationMetadata) {\n this.userOp = userOp\n this.userOp.preVerificationGas = userOp.preVerificationGas\n ? userOp.preVerificationGas\n : calcPreVerificationGas(this.userOp)\n this.opId = metadata.opId\n this.chainId = metadata.chainId\n this.opType = metadata.opType\n this.authType = metadata.authType\n this.groupId = metadata.groupId\n this.message = metadata.message\n this.walletAddr = metadata.walletAddr\n this.status = metadata.status\n this.proposer = metadata.proposer\n this.proposedTime = metadata.proposedTime\n this.executedBy = metadata.executedBy\n this.executedTime = metadata.executedTime\n this.relatedOpIds = metadata.relatedOpIds\n this.signatures = metadata.signatures\n this.txid = metadata.txid\n this.gasUsed = metadata.gasUsed\n this.opFeeUSD = metadata.opFeeUSD\n this.opFee = metadata.opFee\n this.executedBlockNumber = metadata.executedBlockNumber\n this.executedBlockTimeStamp = metadata.executedBlockTimeStamp\n }\n\n static convertTypeToObject(op: Operation): Operation {\n return new Operation(op.userOp, {\n ...op,\n })\n }\n\n async getOpHash(chain: Chain): Promise<Hex> {\n const entryPointAddress = await chain.getAddress('entryPointAddress')\n return await ENTRYPOINT_CONTRACT_INTERFACE.readFromChain(\n entryPointAddress,\n 'getUserOpHash',\n [this.userOp],\n chain,\n )\n }\n\n getMaxTxCost(): bigint {\n const {\n maxFeePerGas,\n preVerificationGas,\n callGasLimit,\n verificationGasLimit,\n } = this.userOp\n\n const mul: bigint = this.userOp.paymasterAndData !== '0x' ? 3n : 1n\n const additionalGas = preVerificationGas ? preVerificationGas : 0n\n const requiredGas: bigint =\n callGasLimit + verificationGasLimit * mul + additionalGas\n\n return BigInt(maxFeePerGas) * requiredGas\n }\n\n async estimateGas(\n auth: Auth,\n userId: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n if (!this.userOp.signature || this.userOp.signature === '0x') {\n this.userOp.signature = await auth.getEstimateGasSignature(userId, this)\n }\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const res = await chain.estimateOpGas({\n ...this.userOp,\n paymasterAndData: '0x',\n maxFeePerGas: 0n,\n maxPriorityFeePerGas: 0n,\n preVerificationGas: 0n,\n callGasLimit: 0n,\n verificationGasLimit: BigInt(10e6),\n })\n\n this.userOp.preVerificationGas = res.preVerificationGas\n this.userOp.verificationGasLimit = res.verificationGasLimit\n this.userOp.callGasLimit = res.callGasLimit\n\n return this\n }\n}\n", "import { defaultAbiCoder } from '@ethersproject/abi'\nimport { Address, encodeAbiParameters, Hex, pad } from 'viem'\n\nimport { AddressZero, HashZero } from '../common'\nimport { User } from '../wallet/types'\nimport { ExtraDataType, LoginData, WalletSignature } from './types'\n\nconst extraDataStructType = {\n type: 'tuple',\n components: [\n { type: 'bytes32[]' },\n { type: 'bytes32[]' },\n { type: 'bytes32[]' },\n { type: 'bytes32[]' },\n ],\n}\n\nconst walletSigEncodingTypes = [\n { type: 'uint8' },\n { type: 'bytes32' },\n { type: 'bytes32' },\n { type: 'bytes32' },\n { type: 'bytes' },\n extraDataStructType,\n]\nexport function encodeLoginData(data: LoginData): Hex {\n let { loginType, newFunWalletOwner, index, socialHandle, salt } = data\n newFunWalletOwner = newFunWalletOwner ? newFunWalletOwner : AddressZero\n index = index ? BigInt(index) : 0n\n socialHandle = socialHandle ? socialHandle : '0x'\n salt = salt ? salt : HashZero\n loginType = loginType ? loginType : 0\n return encodeAbiParameters(\n [\n {\n type: 'tuple',\n components: [\n { type: 'uint8' },\n { type: 'address' },\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'bytes' },\n ],\n },\n ],\n [[loginType, newFunWalletOwner, salt, index, socialHandle]],\n )\n}\n\nconst parseExtraData = (data: ExtraDataType): Hex[][] => {\n let { targetPath, selectorPath, feeRecipientPath, tokenPath } = data\n targetPath ??= []\n selectorPath ??= []\n feeRecipientPath ??= []\n tokenPath ??= []\n return [targetPath, selectorPath, feeRecipientPath, tokenPath]\n}\n\nexport function encodeWalletSignature(data: WalletSignature): Hex {\n const { userId, signature, extraData } = data\n let { authType, roleId, ruleId } = data\n roleId ??= HashZero\n ruleId ??= HashZero\n authType ??= 0\n const extraDataEncoded: Hex[][] = extraData\n ? parseExtraData(extraData)\n : [[], [], [], []]\n return encodeAbiParameters(walletSigEncodingTypes, [\n authType,\n userId,\n roleId,\n ruleId,\n signature,\n extraDataEncoded,\n ]).toLowerCase() as Hex\n}\n\nexport function encodeUserAuthInitData(groupUsers: User[]): Hex {\n const groupIds: Hex[] = []\n const groupInfos: [Hex[], number][] = []\n groupUsers.forEach((user) => {\n groupIds.push(user.userId)\n const paddedMemberIds = user.groupInfo!.memberIds.map((memberId) =>\n pad(memberId, { size: 32 }),\n )\n const sortedMemberIds = paddedMemberIds.sort((a, b) => (a > b ? -1 : 1))\n groupInfos.push([sortedMemberIds, user.groupInfo!.threshold])\n })\n return defaultAbiCoder.encode(\n ['bytes32[]', 'tuple(bytes32[],uint256)[]'],\n [groupIds, groupInfos],\n ) as Hex\n}\n\nexport function addresstoBytes32(data: Address): Hex {\n return encodeAbiParameters([{ type: 'address' }], [data])\n}\n\nexport function toBytes32Arr(data: Hex[]): Hex {\n return encodeAbiParameters([{ type: 'bytes32[]' }], [data])\n}\n", "import { Address, formatUnits, isAddress, parseUnits } from 'viem'\n\nimport { getTokenInfo } from '../apis'\nimport { ERC20_CONTRACT_INTERFACE, TransactionParams } from '../common'\nimport {\n ErrorCode,\n InternalFailureError,\n InvalidParameterError,\n} from '../errors'\nimport { Chain } from './Chain'\n\nconst wrappedNativeTokens = { eth: 'weth', matic: 'wmatic', mnt: 'wmnt' }\n\nexport class Token {\n address?: Address\n chain: Chain\n isNative = false\n symbol = ''\n\n constructor(input: Address | string, chain: Chain) {\n this.chain = chain\n\n if (isAddress(input)) {\n this.address = input\n return\n } else if (input.toLowerCase() in wrappedNativeTokens) {\n this.isNative = true\n }\n\n this.symbol = input.toLowerCase()\n }\n\n async getAddress(): Promise<Address> {\n const chainId = await this.chain.getChainId()\n\n if (this.isNative) {\n const nativeName = (wrappedNativeTokens as any)[this.symbol]\n return await getTokenInfo(nativeName, chainId)\n } else if (this.address) {\n return this.address\n } else if (this.symbol) {\n return await getTokenInfo(this.symbol, chainId)\n } else {\n throw new InternalFailureError(\n ErrorCode.ServerMissingData,\n 'server missing token symbol and address info',\n { symbol: this.symbol, address: this.address, isNative: this.isNative },\n 'Please check token symbol and address. If things look correct, contract fun support for help',\n 'https://docs.fun.xyz',\n )\n }\n }\n\n async getDecimals(): Promise<bigint> {\n if (this.isNative) {\n return 18n\n }\n return await ERC20_CONTRACT_INTERFACE.readFromChain(\n await this.getAddress(),\n 'decimals',\n [],\n this.chain,\n )\n }\n\n async getBalance(address: Address): Promise<string> {\n const amount = await this.getBalanceBN(address)\n const decimals = await this.getDecimals()\n return formatUnits(amount, Number(decimals))\n }\n\n async getBalanceBN(address: Address): Promise<bigint> {\n const chain = this.chain\n let amount = 0n\n if (this.isNative) {\n const client = await chain.getClient()\n amount = await client.getBalance({ address })\n } else {\n amount = await ERC20_CONTRACT_INTERFACE.readFromChain(\n await this.getAddress(),\n 'balanceOf',\n [address],\n chain,\n )\n }\n return amount\n }\n\n async getApproval(owner: string, spender: string): Promise<bigint> {\n if (this.isNative) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Native token can not approve',\n { isNative: this.isNative },\n 'No need to approve native token',\n 'https://docs.fun.xyz',\n )\n }\n const chain = this.chain\n return BigInt(\n await ERC20_CONTRACT_INTERFACE.readFromChain(\n await this.getAddress(),\n 'allowance',\n [owner, spender],\n chain,\n ),\n )\n }\n\n async getDecimalAmount(amount: number | string): Promise<bigint> {\n const decimals = await this.getDecimals()\n return parseUnits(`${amount}`, Number(decimals))\n }\n\n async approve(spender: string, amount: number): Promise<TransactionParams> {\n const amountDec = await this.getDecimalAmount(amount)\n const calldata = ERC20_CONTRACT_INTERFACE.encodeTransactionParams(\n await this.getAddress(),\n 'approve',\n [spender, amountDec],\n )\n const { to, data, value } = calldata\n return { to: to!, data: data!, value: value! }\n }\n\n async transfer(spender: string, amount: number): Promise<TransactionParams> {\n const amountDec = await this.getDecimalAmount(amount)\n return ERC20_CONTRACT_INTERFACE.encodeTransactionParams(\n await this.getAddress(),\n 'transfer',\n [spender, amountDec],\n )\n }\n\n static async getAddress(data: string, chain: Chain): Promise<Address> {\n const token = new Token(data, chain)\n return await token.getAddress()\n }\n\n static async getDecimals(data: string, chain: Chain): Promise<bigint> {\n const token = new Token(data, chain)\n return await token.getDecimals()\n }\n\n static async getBalance(\n data: string,\n address: Address,\n chain: Chain,\n ): Promise<string> {\n const token = new Token(data, chain)\n return await token.getBalance(address)\n }\n\n static async getBalanceBN(\n data: string,\n address: Address,\n chain: Chain,\n ): Promise<bigint> {\n const token = new Token(data, chain)\n return await token.getBalanceBN(address)\n }\n\n static async getApproval(\n data: string,\n owner: string,\n spender: string,\n chain: Chain,\n ): Promise<bigint> {\n const token = new Token(data, chain)\n return await token.getApproval(owner, spender)\n }\n static async getDecimalAmount(\n data: string,\n amount: number,\n chain: Chain,\n ): Promise<bigint> {\n const token = new Token(data, chain)\n return await token.getDecimalAmount(amount)\n }\n\n static async approve(\n data: string,\n spender: string,\n amount: number,\n chain: Chain,\n ): Promise<TransactionParams> {\n const token = new Token(data, chain)\n return await token.approve(spender, amount)\n }\n\n static async transfer(\n data: string,\n spender: string,\n amount: number,\n chain: Chain,\n ): Promise<TransactionParams> {\n const token = new Token(data, chain)\n return await token.transfer(spender, amount)\n }\n\n static isNative(data: string): boolean {\n return data.toLowerCase() in wrappedNativeTokens\n }\n}\n", "import { Address, Hex } from 'viem'\n\nimport { Chain } from './Chain'\n\nexport interface ChainInput {\n chainIdentifier?: string | Chain | number\n rpcUrl?: string\n}\n\nexport type FactoryCreateAccountParams = {\n initializerCallData: string\n implementation: string\n data: string\n}\n\nexport type InitCodeParams = {\n entryPointAddress: Address\n factoryAddress: Address\n implementationAddress?: Address\n loginData: LoginData\n verificationData: readonly Hex[]\n verificationAddresses: readonly Address[]\n}\n\nexport type Addresses = {\n [key: string]: Address\n}\n\n/**\n * @param loginType 0 = EOA, 1 = Twitter\n * @param newFunWalletOwner *social login* Address of the new FunWallet owner, used to stop frontrunning\n * @param index *social login* Hashed with socialHandle and loginType to generate salt\n * @param socialHandle *social login*\n * @param salt *EOA login* Hashed with loginType to generate salt\n */\n\nexport type LoginData = {\n loginType?: number\n newFunWalletOwner?: Hex\n index?: number | bigint\n socialHandle?: Hex\n salt?: Hex\n}\n\nexport type WalletInitialzeParams = {\n _newEntryPoint: string\n validationInitData: string\n}\n\nexport type WalletSignature = {\n authType?: number\n userId: Hex\n roleId?: Hex\n ruleId?: Hex\n signature: Hex\n extraData?: ExtraDataType\n}\n\nexport type ExtraDataType = {\n targetPath?: Hex[]\n selectorPath?: Hex[]\n feeRecipientPath?: Hex[]\n tokenPath?: Hex[]\n}\n\nexport type UserOperation = {\n sender: string\n nonce: bigint\n initCode?: string\n callData: string\n callGasLimit: bigint\n verificationGasLimit: bigint\n preVerificationGas?: bigint\n maxFeePerGas: bigint\n maxPriorityFeePerGas: bigint\n paymasterAndData?: string\n signature?: string\n}\n\nexport enum AuthType {\n ECDSA = 0,\n MULTI_SIG = 1,\n}\n\nexport type Signature = {\n userId: Hex\n signature: Hex\n signedTime: number\n}\n\nexport enum OperationType {\n SINGLE_OPERATION = 'SINGLE_OPERATION',\n GROUP_OPERATION = 'GROUP_OPERATION',\n REJECTION = 'REJECTION',\n}\n\nexport enum OperationStatus {\n ALL = '',\n PENDING_APPROVED = 'PENDING_APPROVED',\n APPROVED = 'APPROVED',\n PENDING = 'PENDING',\n OP_SUCCEED = 'OP_SUCCEED',\n OP_REVERTED = 'OP_REVERTED',\n SCHEDULED = 'SCHEDULED',\n}\n\nexport type OperationMetadata = {\n opId?: Hex\n chainId: string\n opType: OperationType\n authType: AuthType\n groupId?: Hex\n message?: string\n walletAddr: Address\n status?: OperationStatus\n proposer: string // do not use address in case we later use non-address data as the proposer\n proposedTime?: number\n executedBy?: string\n executedTime?: number\n relatedOpIds?: Hex[]\n signatures?: Signature[]\n txid?: string\n gasUsed?: string\n opFeeUSD?: string\n opFee?: string\n executedBlockNumber?: number\n executedBlockTimeStamp?: number\n}\n", "import { isHex } from 'viem'\n\nimport { BYTES32_LENGTH } from '../common'\n\nexport const isBytes32 = (input: string): boolean => {\n if (!isHex(input)) {\n return false\n }\n return input.length === BYTES32_LENGTH\n}\n", "import { createWalletClient, custom, toBytes } from 'viem'\n// @ts-ignore\n//eslint-disable-next-line\nimport { Chain, mainnet } from \"viem/chains\"\n\ninterface web3ProviderConversionInterface {\n provider: any\n viemChain?: Chain\n}\n\ninterface web3SignerConversionInterface {\n signer: any\n viemChain?: Chain\n}\n\nexport const convertProviderToClient = ({\n provider,\n viemChain,\n}: web3ProviderConversionInterface) => {\n const chain = viemChain ? viemChain : mainnet\n if (provider.request) {\n return createWalletClient({\n chain,\n transport: custom(provider),\n })\n }\n if (!provider.send) throw new Error(\"Provider isn't EIP 1193 compliant\")\n return createWalletClient({\n chain,\n transport: custom({\n async request({ method, params }) {\n const response = await provider.send(method, params)\n return response\n },\n }),\n })\n}\n\nexport const convertSignerToClient = ({\n signer,\n viemChain,\n}: web3SignerConversionInterface) => {\n const chain = viemChain ? viemChain : mainnet\n if (signer.type === 'local') {\n return createWalletClient({\n chain,\n transport: custom(signer),\n })\n }\n return createWalletClient({\n chain,\n transport: custom({\n async request({ method, params }) {\n if (method === 'eth_requestAccounts') {\n return [await signer.getAddress()]\n } else if (method === 'personal_sign') {\n return await signer.signMessage(toBytes(params[0]))\n }\n },\n }),\n })\n}\n", "import { decodeAbiParameters, Hex, pad, toBytes } from 'viem'\n\nimport { ETH_TRANSFER_SELECTOR, WALLET_ABI } from '../common'\nimport {\n Chain,\n encodeWalletSignature,\n Operation,\n WalletSignature,\n} from '../data'\nimport { MerkleTree } from '../utils/MerkleUtils'\nimport { getSigHash } from '../utils/ViemUtils'\nimport { Auth } from './Auth'\nimport { AuthInput, WalletCallData } from './types'\n\nconst SELECTOR_LENGTH = 10\n\nexport class SessionKeyAuth extends Auth {\n ruleId: Hex\n roleId: Hex\n\n targetSelectorMerkleTree: MerkleTree\n feeRecipientMerkleTree: MerkleTree\n\n constructor(\n authInput: AuthInput,\n ruleId: Hex,\n roleId: Hex,\n targetSelectorMerkleTree: MerkleTree,\n feeRecipientMerkleTree: MerkleTree,\n ) {\n super(authInput)\n this.ruleId = ruleId\n this.roleId = roleId\n this.targetSelectorMerkleTree = targetSelectorMerkleTree\n this.feeRecipientMerkleTree = feeRecipientMerkleTree\n }\n\n override async signOp(operation: Operation, chain: Chain): Promise<Hex> {\n if (!this.targetSelectorMerkleTree) {\n throw new Error('SessionKeyAuth not connected to wallet')\n }\n await this.init()\n const opHash = await operation.getOpHash(chain)\n\n let signature\n if (this.signer?.type === 'local') {\n signature = await this.signer.signMessage({\n message: { raw: toBytes(opHash) },\n })\n } else if (this.client && this.account) {\n signature = await this.client.signMessage({\n account: this.account,\n message: { raw: toBytes(opHash) },\n })\n } else {\n throw new Error('No signer or client')\n }\n const target = getTargetFromCall(operation.userOp.callData as Hex)\n const selector = getSelectorFromCall(operation.userOp.callData as Hex)\n const walletSignature: WalletSignature = {\n userId: await this.getUserId(),\n signature,\n roleId: this.roleId,\n ruleId: this.ruleId,\n extraData: {\n targetPath: this.targetSelectorMerkleTree.getPathForItem(target),\n selectorPath: this.targetSelectorMerkleTree.getPathForItem(selector),\n },\n }\n return encodeWalletSignature(walletSignature)\n }\n\n override async getEstimateGasSignature(\n userId: string,\n operation: Operation,\n ): Promise<Hex> {\n if (!this.targetSelectorMerkleTree) {\n throw new Error('SessionKeyAuth not connected to wallet')\n }\n await this.init()\n const target = getTargetFromCall(operation.userOp.callData as Hex)\n const selector = getSelectorFromCall(operation.userOp.callData as Hex)\n try {\n const walletSignature: WalletSignature = {\n userId: pad(userId as Hex, { size: 32 }),\n signature: pad('0x', { size: 65 }),\n roleId: this.roleId,\n ruleId: this.ruleId,\n extraData: {\n targetPath: this.targetSelectorMerkleTree.getPathForItem(target),\n selectorPath: this.targetSelectorMerkleTree.getPathForItem(selector),\n },\n }\n return encodeWalletSignature(walletSignature)\n } catch {\n throw new Error('Function or target is not allowed in session key')\n }\n }\n}\n\nexport const getTargetFromCall = (callData: Hex): Hex => {\n return decodeCalldata(callData).target\n}\nexport const getSelectorFromCall = (callData: Hex): Hex => {\n const out = decodeCalldata(callData).calldata.slice(0, SELECTOR_LENGTH) as Hex\n return out === '0x' ? ETH_TRANSFER_SELECTOR : out\n}\n\nexport const decodeCalldata = (callData: Hex): WalletCallData => {\n const execFromEntryPointFeeSelector = getSigHash(\n WALLET_ABI,\n 'execFromEntryPointWithFee',\n )\n const execFromEntryPointSelector = getSigHash(\n WALLET_ABI,\n 'execFromEntryPoint',\n )\n if (callData.includes(execFromEntryPointFeeSelector)) {\n return _decodeExecWithFee(callData)\n } else if (callData.includes(execFromEntryPointSelector)) {\n return _decodeExec(callData)\n }\n throw new Error(\n 'invalid call data. must be execFromEntryPoint or execFromEntryPointWithFee',\n )\n}\n\nconst _decodeExecWithFee = (callData: Hex): WalletCallData => {\n const walletcalldata = ('0x' + callData.slice(SELECTOR_LENGTH)) as Hex\n const [target, value, calldata] = decodeAbiParameters(\n [{ type: 'address' }, { type: 'uint256' }, { type: 'bytes' }],\n walletcalldata,\n )\n return {\n target: target as Hex,\n value: value as bigint,\n calldata: calldata as Hex,\n }\n}\nconst _decodeExec = (callData: Hex): WalletCallData => {\n const walletcalldata = ('0x' + callData.slice(SELECTOR_LENGTH)) as Hex\n const [target, value, calldata] = decodeAbiParameters(\n [{ type: 'address' }, { type: 'uint256' }, { type: 'bytes' }],\n walletcalldata,\n )\n return {\n target: target as Hex,\n value: value as bigint,\n calldata: calldata as Hex,\n }\n}\n", "import { AbiParameter } from 'abitype'\nimport { AbiItem, getAbiItem, toFunctionSelector } from 'viem'\n\n// Copied from viem\nexport function formatAbiItem(\n abiItem: AbiItem,\n { includeName = false }: { includeName?: boolean } = {},\n) {\n if (\n abiItem.type !== 'function' &&\n abiItem.type !== 'event' &&\n abiItem.type !== 'error'\n )\n throw new Error(`InvalidDefinitionTypeError: ${abiItem.type}`)\n\n return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`\n}\n\nexport function formatAbiParams(\n params: readonly AbiParameter[] | undefined,\n { includeName = false }: { includeName?: boolean } = {},\n): string {\n if (!params) return ''\n return params\n .map((param) => formatAbiParam(param, { includeName }))\n .join(includeName ? ', ' : ',')\n}\n\nfunction formatAbiParam(\n param: AbiParameter,\n { includeName }: { includeName: boolean },\n): string {\n if (param.type.startsWith('tuple')) {\n return `(${formatAbiParams(\n (param as unknown as { components: AbiParameter[] }).components,\n { includeName },\n )})${param.type.slice('tuple'.length)}`\n }\n return param.type + (includeName && param.name ? ` ${param.name}` : '')\n}\n\nexport const getSigHash = (abi: any, functionName: string) => {\n const abiItem = getAbiItem({ abi, name: functionName })\n if (!abiItem) throw new Error('Unable to retrieve abi')\n const definition = formatAbiItem(abiItem)\n return toFunctionSelector(definition)\n}\n", "import { concat, Hex, keccak256, padHex } from 'viem'\n\n// Copied from contracts repo\n\nexport const createMerkleHashes = (list: Hex[]) => {\n list = list.map((data) => keccak256(data))\n const treeSize = 2 ** Math.ceil(Math.log2(list.length)) * 2\n const buffer = new Array(treeSize).fill('0x')\n arrayCopy(buffer, list, treeSize / 2)\n for (let i = treeSize / 2 - list.length; i > 0; i--) {\n buffer[buffer.length - i] = list[list.length - 1]\n }\n for (let i = 1; i < buffer.length; i++) {\n buffer[i] = getHash(buffer, i)\n }\n return buffer\n}\n\nexport const getLeft = (i: number) => i * 2\nexport const getRight = (i: number) => i * 2 + 1\nexport const getParent = (index: number) => Math.floor(index / 2)\nexport const getSibling = (index: number) => {\n const parent = getParent(index)\n if (index % 2 === 0) {\n return getRight(parent)\n }\n return getLeft(parent)\n}\n\nexport const getHash = (list: Hex[], i: number): Hex => {\n if (list[i] === '0x') {\n if (getRight(i) < list.length) {\n const left = getHash(list, getLeft(i))\n const right = getHash(list, getRight(i))\n return getHashPair(left, right)\n }\n throw new Error('Invalid tree')\n }\n return list[i]\n}\n\nexport const getHashPair = (left: Hex, right: Hex): Hex => {\n if (BigInt(left) < BigInt(right)) {\n return keccak256(concat([left, right]))\n }\n return keccak256(concat([right, left]))\n}\n\nexport const arrayCopy = (arr: any[], copy: any[], start: number) => {\n for (let i = 0; i < copy.length; i++) {\n arr[i + start] = copy[i]\n }\n}\n\nexport const getPathForItem = (list: Hex[], item: Hex) => {\n let index = list.indexOf(keccak256(item))\n if (index === -1) {\n throw new Error('Item not found')\n }\n const path: Hex[] = []\n while (index > 1) {\n const sibling = getSibling(index)\n path.push(list[sibling])\n index = getParent(index)\n }\n return path\n}\n\nexport const verifyPath = (root: Hex, item: Hex, path: Hex[]) => {\n let hash = keccak256(item)\n for (let i = 0; i < path.length; i++) {\n hash = getHashPair(hash, path[i])\n }\n return hash === root\n}\n\nexport class MerkleTree {\n tree: Hex[]\n constructor(list: Hex[]) {\n this.tree = createMerkleHashes(list)\n }\n getPathForItem(item: Hex) {\n return getPathForItem(this.tree, item)\n }\n verifyPath(item: Hex, path: Hex[]) {\n return verifyPath(this.getRootHash(), item, path)\n }\n getRootHash() {\n if (this.tree.length === 0) {\n return padHex('0x1', { size: 32 })\n }\n return this.tree[1]\n }\n}\n", "import { Address } from 'viem'\n\nimport { TransactionParams, WALLET_CONTRACT_INTERFACE } from '../common'\n\nexport const createExecuteBatchTxParams = (\n params: TransactionParams[],\n walletAddress: Address,\n): TransactionParams => {\n const targets = params.map((param) => param.to)\n const values = params.map((param) => param.value ?? 0n)\n const datas = params.map((param) => param.data ?? '0x')\n return WALLET_CONTRACT_INTERFACE.encodeTransactionParams(\n walletAddress,\n 'executeBatch',\n [targets, values, datas],\n )\n}\n", "import { pad } from 'viem'\n\nimport {\n TransactionParams,\n USER_AUTHENTICATION_CONTRACT_INTERFACE,\n} from '../common'\nimport { EnvOption } from '../config'\nimport { Chain } from '../data'\nimport {\n CreateGroupParams,\n RemoveGroupParams,\n UpdateGroupParams,\n} from './types'\n\nexport const createGroupTxParams = async (\n params: CreateGroupParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n const { groupId, group } = params\n group.userIds = group.userIds.map((userId) => {\n return pad(userId, { size: 32 })\n })\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const userAuthAddress = await chain.getAddress('userAuthAddress')\n return USER_AUTHENTICATION_CONTRACT_INTERFACE.encodeTransactionParams(\n userAuthAddress,\n 'createMultiSigGroup',\n [pad(groupId, { size: 32 }), group],\n )\n}\n\nexport const updateGroupTxParams = async (\n params: UpdateGroupParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n const { groupId, group } = params\n group.userIds = group.userIds\n .map((userId) => {\n return pad(userId, { size: 32 })\n })\n .sort((a, b) => b.localeCompare(a))\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const userAuthAddress = await chain.getAddress('userAuthAddress')\n return USER_AUTHENTICATION_CONTRACT_INTERFACE.encodeTransactionParams(\n userAuthAddress,\n 'updateMultiSigGroup',\n [pad(groupId, { size: 32 }), group],\n )\n}\n\nexport const removeGroupTxParams = async (\n params: RemoveGroupParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n const { groupId } = params\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const userAuthAddress = await chain.getAddress('userAuthAddress')\n return USER_AUTHENTICATION_CONTRACT_INTERFACE.encodeTransactionParams(\n userAuthAddress,\n 'deleteMultiSigGroup',\n [pad(groupId, { size: 32 })],\n )\n}\n", "import { Address, isAddress, parseEther } from 'viem'\n\nimport {\n APPROVE_AND_EXEC_CONTRACT_INTERFACE,\n ERC20_CONTRACT_INTERFACE,\n TransactionParams,\n WITHDRAW_QUEUE_ABI,\n} from '../common'\nimport { EnvOption } from '../config'\nimport { Chain } from '../data'\nimport {\n ErrorCode,\n InternalFailureError,\n InvalidParameterError,\n} from '../errors'\nimport { ContractInterface } from '../viem/ContractInterface'\nimport { FinishUnstakeParams, RequestUnstakeParams, StakeParams } from './types'\n\nconst getWithdrawQueueInterface = () => {\n return new ContractInterface(WITHDRAW_QUEUE_ABI)\n}\n\nexport const isRequestUnstakeParams = (input: any): boolean => {\n return input.amounts !== undefined\n}\nexport const isFinishUnstakeParams = (input: any): boolean => {\n return input.recipient !== undefined\n}\nexport const stakeTransactionParams = async (\n params: StakeParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const lidoAddress = getSteth(await chain.getChainId())\n return { to: lidoAddress, value: parseEther(`${params.amount}`), data: '0x' }\n}\n\nexport const requestUnstakeTransactionParams = async (\n params: RequestUnstakeParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n if (!isAddress(params.recipient ?? '')) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Recipient address is not a valid address, please make sure it is a valid checksum address.',\n { params },\n 'Please make sure it is a valid checksum address',\n 'https://docs.fun.xyz',\n )\n }\n // Approve steth\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const chainId = await chain.getChainId()\n const steth = getSteth(chainId)\n const withdrawalQueue: Address = getWithdrawalQueue(chainId)\n if (\n !steth ||\n !withdrawalQueue ||\n steth.length === 0 ||\n withdrawalQueue.length === 0\n ) {\n throw new InvalidParameterError(\n ErrorCode.ChainNotSupported,\n 'Incorrect chainId, staking only available on Ethereum mainnet and Goerli',\n { params },\n 'Provide correct chainId.',\n 'https://docs.fun.xyz',\n )\n }\n const approveAmount: number = params.amounts.reduce(\n (partialSum, a) => partialSum + a,\n 0,\n )\n const approveData = ERC20_CONTRACT_INTERFACE.encodeTransactionParams(\n steth,\n 'approve',\n [withdrawalQueue, parseEther(`${approveAmount}`)],\n )\n\n // Request Withdrawal\n const requestWithdrawalData =\n getWithdrawQueueInterface().encodeTransactionParams(\n withdrawalQueue,\n 'requestWithdrawals',\n [\n params.amounts.map((amount) => parseEther(`${amount}`)),\n params.recipient,\n ],\n )\n const approveAndExecAddress = await chain.getAddress('approveAndExecAddress')\n return APPROVE_AND_EXEC_CONTRACT_INTERFACE.encodeTransactionParams(\n approveAndExecAddress,\n 'approveAndExecute',\n [withdrawalQueue, 0, requestWithdrawalData.data, steth, approveData.data],\n )\n}\n\nexport const finishUnstakeTransactionParams = async (\n params: FinishUnstakeParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n if (!isAddress(params.recipient ?? '')) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Recipient address is not a valid address, please make sure it is a valid checksum address.',\n { params },\n 'Please make sure it is a valid checksum address',\n 'https://docs.fun.xyz',\n )\n }\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const withdrawQueueAddress = getWithdrawalQueue(await chain.getChainId())\n const readyToWithdrawRequestIds = (\n await getReadyToWithdrawRequests(params, txOptions)\n ).slice(0, 5)\n if (readyToWithdrawRequestIds.length === 0) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Not ready to withdraw requests',\n { params },\n 'Please wait a bit.',\n 'https://docs.fun.xyz',\n )\n }\n\n // claim batch withdrawal\n const lastCheckpoint = await getWithdrawQueueInterface().readFromChain(\n withdrawQueueAddress,\n 'getLastCheckpointIndex',\n [],\n chain,\n )\n const hints = await getWithdrawQueueInterface().readFromChain(\n withdrawQueueAddress,\n 'findCheckpointHints',\n [readyToWithdrawRequestIds, 1, lastCheckpoint],\n chain,\n )\n if (!hints) {\n throw new InternalFailureError(\n ErrorCode.CheckPointHintsNotFound,\n 'lido checkpoint hints are not found when batching the withdrawal',\n { params, readyToWithdrawRequestIds, lastCheckpoint, hints },\n 'Retry later.',\n 'https://docs.fun.xyz',\n )\n }\n return getWithdrawQueueInterface().encodeTransactionParams(\n withdrawQueueAddress,\n 'claimWithdrawalsTo',\n [readyToWithdrawRequestIds, hints, params.recipient],\n )\n}\n\nconst getReadyToWithdrawRequests = async (\n params: FinishUnstakeParams,\n txOptions: EnvOption,\n): Promise<bigint[]> => {\n if (!isAddress(params.recipient ?? '')) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Recipient address is not a valid address, please make sure it is a valid checksum address.',\n { params },\n 'Please make sure it is a valid checksum address',\n 'https://docs.fun.xyz',\n )\n }\n // check withdrawal requests\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const withdrawalQueueAddr: Address = getWithdrawalQueue(\n await chain.getChainId(),\n )\n\n const withdrawalRequests: bigint[] =\n await getWithdrawQueueInterface().readFromChain(\n withdrawalQueueAddr,\n 'getWithdrawalRequests',\n [params.walletAddress],\n chain,\n )\n // get the state of a particular nft\n const withdrawalStatusTx = await getWithdrawQueueInterface().readFromChain(\n withdrawalQueueAddr,\n 'getWithdrawalStatus',\n [withdrawalRequests],\n chain,\n )\n const readyToWithdraw: bigint[] = []\n for (let i = 0; i < withdrawalStatusTx.length; i++) {\n if (withdrawalStatusTx[i].isFinalized) {\n readyToWithdraw.push(withdrawalRequests[i])\n }\n }\n const readyToWithdrawRequestIds = [...readyToWithdraw].sort((a, b) => {\n return a > b ? 1 : -1\n })\n return readyToWithdrawRequestIds\n}\n\nconst getWithdrawalQueue = (chainId: string): Address => {\n switch (parseInt(chainId)) {\n case 1:\n return '0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1'\n case 5:\n return '0xCF117961421cA9e546cD7f50bC73abCdB3039533'\n case 36865:\n return '0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1'\n default:\n throw new InvalidParameterError(\n ErrorCode.ChainNotSupported,\n 'Incorrect chainId, staking only available on Ethereum mainnet and Goerli',\n { chainId },\n 'Provide correct chainId.',\n 'https://docs.fun.xyz',\n )\n }\n}\n\nconst getSteth = (chainId: string): Address => {\n switch (parseInt(chainId)) {\n case 1:\n return '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84'\n case 5:\n return '0x1643E812aE58766192Cf7D2Cf9567dF2C37e9B7F'\n case 36865:\n return '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84'\n default:\n throw new InvalidParameterError(\n ErrorCode.ChainNotSupported,\n 'Incorrect chainId, staking only available on Ethereum mainnet and Goerli',\n { chainId },\n 'Provide correct chainId.',\n 'https://docs.fun.xyz',\n )\n }\n}\n", "import { Address, isAddress } from 'viem'\n\nimport {\n get1InchAllowance,\n get1InchApproveTx,\n get1InchSwapTx,\n} from '../apis/SwapApis'\nimport {\n APPROVE_AND_EXEC_CONTRACT_INTERFACE,\n APPROVE_AND_SWAP_ABI,\n TransactionParams,\n} from '../common'\nimport { EnvOption } from '../config'\nimport { Chain } from '../data'\nimport { Token } from '../data/Token'\nimport { ErrorCode, InvalidParameterError } from '../errors'\nimport {\n swapExec,\n swapExecV2,\n UniswapV2Addrs,\n UniswapV3Addrs,\n} from '../utils/SwapUtils'\nimport { ContractInterface } from '../viem/ContractInterface'\nimport { OneInchSwapParams, SwapParams, UniswapPoolFeeOptions } from './types'\n\nexport const oneInchSupported: number[] = [1, 10, 56, 137, 8453, 42161]\nexport const uniswapV3Supported = [1, 5, 10, 56, 137, 31337, 36865, 42161]\nconst DEFAULT_SLIPPAGE = 0.5 // .5%\nconst eth1InchAddress = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'\nconst approveAndSwapInterface = new ContractInterface(APPROVE_AND_SWAP_ABI)\n\nconst getOneInchApproveTx = async (\n oneInchSwapParams: OneInchSwapParams,\n): Promise<TransactionParams | null> => {\n const chainId = await Chain.getChain({\n chainIdentifier: oneInchSwapParams.chainId,\n })\n const allowance = await get1InchAllowance(\n oneInchSwapParams.chainId.toString(),\n oneInchSwapParams.src,\n oneInchSwapParams.from,\n )\n if (Number(allowance) < Number(oneInchSwapParams.amount)) {\n const approveTx = await get1InchApproveTx(\n chainId.toString(),\n oneInchSwapParams.src,\n oneInchSwapParams.amount,\n )\n return approveTx\n }\n return null\n}\n\nconst getOneInchSwapTx = async (\n oneinchSwapParams: OneInchSwapParams,\n): Promise<TransactionParams> => {\n const chainId = await Chain.getChain({\n chainIdentifier: oneinchSwapParams.chainId,\n })\n return await get1InchSwapTx(\n chainId.toString(),\n oneinchSwapParams.src.toString(),\n oneinchSwapParams.dst.toString(),\n oneinchSwapParams.amount.toString(),\n oneinchSwapParams.from.toString(),\n oneinchSwapParams.slippage.toString(),\n oneinchSwapParams.disableEstimate.toString(),\n oneinchSwapParams.allowPartialFill.toString(),\n )\n}\n\nexport const oneInchTransactionParams = async (\n params: SwapParams,\n walletAddress: Address,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n if (!oneInchSupported.includes(Number(await chain.getChainId()))) {\n throw new InvalidParameterError(\n ErrorCode.ChainNotSupported,\n 'Incorrect chainId, oneInch only available on Ethereum mainnet and polygon',\n { params },\n 'Provide correct chainId.',\n 'https://docs.fun.xyz',\n )\n }\n if (!isAddress(params.recipient ?? '')) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Recipient address is not a valid address, please make sure it is a valid checksum address.',\n { params },\n 'Please make sure it is a valid checksum address',\n 'https://docs.fun.xyz',\n )\n }\n\n const approveAndExecAddress = await chain.getAddress('approveAndExecAddress')\n const inToken = new Token(params.tokenIn, chain)\n const outToken = new Token(params.tokenOut, chain)\n\n const inTokenAddress = inToken.isNative\n ? eth1InchAddress\n : await inToken.getAddress()\n const outTokenAddress = outToken.isNative\n ? eth1InchAddress\n : await outToken.getAddress()\n const oneinchSwapParams: OneInchSwapParams = {\n src: inTokenAddress,\n dst: outTokenAddress,\n amount: (await inToken.getDecimalAmount(params.inAmount)).toString(),\n from: walletAddress,\n slippage: params.slippage ?? DEFAULT_SLIPPAGE,\n disableEstimate: true,\n allowPartialFill: false,\n chainId: Number(await chain.getChainId()),\n }\n\n const approveTx = await getOneInchApproveTx(oneinchSwapParams)\n const swapTx = await getOneInchSwapTx(oneinchSwapParams)\n if (!approveTx) {\n return swapTx\n } else {\n return APPROVE_AND_EXEC_CONTRACT_INTERFACE.encodeTransactionParams(\n approveAndExecAddress,\n 'approveAndExecute',\n [swapTx.to, swapTx.value, swapTx.data, inTokenAddress, approveTx.data],\n )\n }\n}\n\nexport const uniswapV3SwapTransactionParams = async (\n params: SwapParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const client = await chain.getClient()\n const tokenSwapAddress = await chain.getAddress('tokenSwapAddress')\n const univ3quoter = await chain.getAddress('univ3quoter')\n const univ3factory = await chain.getAddress('univ3factory')\n const univ3router = await chain.getAddress('univ3router')\n const tokenIn = new Token(params.tokenIn, chain)\n const tokenOut = new Token(params.tokenOut, chain)\n\n const tokenInAddress = await tokenIn.getAddress()\n const tokenOutAddress = await tokenOut.getAddress()\n\n const uniswapAddrs: UniswapV3Addrs = {\n univ3quoter,\n univ3factory,\n univ3router,\n }\n\n let percentDecimal = 100\n let slippage = params.slippage ? params.slippage : DEFAULT_SLIPPAGE\n while (slippage < 1 || Math.trunc(slippage) !== slippage) {\n percentDecimal *= 10\n slippage *= 10\n }\n if (!isAddress(params.recipient ?? '')) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Recipient address is not a valid address, please make sure it is a valid checksum address.',\n { params },\n 'Please make sure it is a valid checksum address',\n 'https://docs.fun.xyz',\n )\n }\n\n const swapParams = {\n tokenInAddress,\n tokenOutAddress,\n amountIn: params.inAmount,\n // optional\n recipient: params.recipient! as Address,\n percentDecimal,\n slippage,\n poolFee: params.poolFee ?? UniswapPoolFeeOptions.medium,\n }\n\n const { data, amount } = await swapExec(\n client,\n uniswapAddrs,\n swapParams,\n Number(await chain.getChainId()),\n )\n if (tokenIn.isNative) {\n return approveAndSwapInterface.encodeTransactionParams(\n tokenSwapAddress,\n 'executeSwapETH',\n [amount, data],\n )\n } else {\n return approveAndSwapInterface.encodeTransactionParams(\n tokenSwapAddress,\n 'executeSwapERC20',\n [tokenInAddress, amount, data],\n )\n }\n}\n\nexport const uniswapV2SwapTransactionParams = async (\n params: SwapParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n): Promise<TransactionParams> => {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const client = await chain.getClient()\n const tokenSwapAddress = await chain.getAddress('tokenSwapAddress')\n const factory = await chain.getAddress('UniswapV2Factory')\n const router = await chain.getAddress('UniswapV2Router02')\n\n const tokenIn = new Token(params.tokenIn, chain)\n const tokenOut = new Token(params.tokenOut, chain)\n\n const tokenInAddress = await tokenIn.getAddress()\n const tokenOutAddress = await tokenOut.getAddress()\n\n const uniswapAddrs: UniswapV2Addrs = {\n factory,\n router,\n }\n\n let percentDecimal = 100\n let slippage = params.slippage ? params.slippage : DEFAULT_SLIPPAGE\n while (slippage < 1 || Math.trunc(slippage) !== slippage) {\n percentDecimal *= 10\n slippage *= 10\n }\n\n const swapParams = {\n tokenInAddress,\n tokenOutAddress,\n amountIn: params.inAmount,\n // optional\n recipient: params.recipient! as Address,\n percentDecimal,\n slippage,\n poolFee: params.poolFee ?? UniswapPoolFeeOptions.medium,\n }\n const chainId = Number(await chain.getChainId())\n\n const { data, to, amount } = await swapExecV2(\n client,\n uniswapAddrs,\n swapParams,\n chainId,\n )\n\n if (tokenIn.isNative) {\n return approveAndSwapInterface.encodeTransactionParams(\n tokenSwapAddress,\n 'executeSwapETH',\n [to, amount, data],\n )\n } else {\n return approveAndSwapInterface.encodeTransactionParams(\n tokenSwapAddress,\n 'executeSwapERC20',\n [tokenInAddress, amount, data],\n )\n }\n}\n", "import { TransactionParams } from '../common'\nimport { API_URL } from '../common/constants'\nimport { sendGetRequest } from '../utils/ApiUtils'\n\nexport async function get1InchSwapTx(\n chainId: string,\n src: string,\n dst: string,\n amount: string,\n from: string,\n slippage: string,\n disableEstimate: string,\n allowPartialFill: string,\n): Promise<TransactionParams> {\n const params = new URLSearchParams({\n src,\n dst,\n amount,\n from,\n slippage,\n disableEstimate,\n allowPartialFill,\n }).toString()\n const res = await sendGetRequest(API_URL, `swap/${chainId}/swap/?${params}`)\n return {\n to: res.tx.to,\n value: Number(res.tx.value),\n data: res.tx.data,\n }\n}\n\nexport async function get1InchAllowance(\n chainId: string,\n tokenAddress: string,\n walletAddress: string,\n): Promise<number> {\n const params = new URLSearchParams({\n tokenAddress,\n walletAddress,\n }).toString()\n const res = await sendGetRequest(\n API_URL,\n `swap/${chainId}/approve/allowance/?${params}`,\n )\n return Number(res['allowance'])\n}\n\nexport async function get1InchApproveTx(\n chainId: string,\n tokenAddress: string,\n amount: string,\n): Promise<TransactionParams> {\n const params = new URLSearchParams({\n tokenAddress,\n amount,\n }).toString()\n const res = await sendGetRequest(\n API_URL,\n `swap/${chainId}/approve/transaction/?${params}`,\n )\n return {\n to: res.to,\n value: Number(res.value),\n data: res.data,\n }\n}\n", "import { Address, Hex } from 'viem'\n\nimport { TransactionParams } from '../common'\nimport { Chain } from '../data'\n\nexport interface ApproveAndExecParams {\n approve: ApproveERC20Params\n exec: TransactionParams\n}\n\nexport interface ERC721TransferParams {\n tokenId: number\n collection: string\n from?: string\n to: string\n}\n\nexport interface TokenTransferParams {\n token: string\n amount: number | string\n from?: string\n to: string\n}\n\nexport type TransferParams = TokenTransferParams | ERC721TransferParams\n\n// Approval Param types\nexport type ApproveParams = ApproveERC20Params | ApproveERC721Params\n\nexport interface ApproveERC20Params {\n spender: string\n amount: number\n token: string\n}\n\nexport interface ApproveERC721Params {\n spender: string\n tokenId: number\n collection: string\n}\n\nexport type StakeParams = {\n amount: number // denominated in ETH\n}\n\nexport type RequestUnstakeParams = {\n amounts: number[] // denominated in ETH\n recipient: string\n}\n\nexport type FinishUnstakeParams = {\n recipient: string\n walletAddress: string\n}\n\nexport enum UniswapPoolFeeOptions {\n lowest = 'lowest',\n low = 'low',\n medium = 'medium',\n high = 'high',\n}\n\nexport type SwapParams = {\n tokenIn: string\n tokenOut: string\n inAmount: number\n slippage?: number\n recipient?: string\n poolFee?: UniswapPoolFeeOptions\n}\n\nexport type LimitOrderParam = {\n tokenIn: string\n tokenOut: string\n tokenInAmount: number\n tokenOutAmount: number\n poolFee?: UniswapPoolFeeOptions\n}\n\nexport type SessionKeyParams = {\n targetWhitelist: string[]\n actionWhitelist: ActionWhitelistObject[]\n feeTokenWhitelist?: string[]\n feeRecipientWhitelist?: string[]\n deadline: number\n actionValueLimit?: bigint\n feeValueLimit?: bigint\n ruleId: Hex // 32 bytes\n roleId: Hex // 32 bytes\n userId?: Hex // 32 bytes\n}\n\nexport type ActionWhitelistObject = {\n abi: any\n functionWhitelist: string[]\n}\n\nexport type RuleStruct = {\n deadline: bigint\n actionValueLimit: bigint\n targetSelectorMerkleRootHash: Hex\n feeValueLimit: bigint\n feeRecipientTokenMerkleRootHash: Hex\n}\n\nexport type Group = {\n userIds: Hex[]\n threshold: number\n}\n\nexport type AddOwnerParams = {\n ownerId: Hex\n}\n\nexport type RemoveOwnerParams = {\n ownerId: Hex\n}\n\nexport type CreateGroupParams = {\n groupId: Hex\n group: Group\n}\n\nexport type AddUserToGroupParams = {\n groupId: Hex\n userId: Hex\n}\n\nexport type RemoveUserFromGroupParams = {\n groupId: Hex\n userId: Hex\n}\n\nexport type UpdateThresholdOfGroupParams = {\n groupId: Hex\n threshold: number\n}\n\nexport type UpdateGroupParams = {\n groupId: Hex\n group: Group\n}\n\nexport type RemoveGroupParams = {\n groupId: Hex\n}\n\nexport type OneInchSwapParams = {\n src: Address // token address or 0xeee...eee for ETH\n dst: Address // token address or 0xeee...eee for ETH\n amount: string // amount of src tokens to swap (in wei)\n from: Address // wallet address\n slippage: number // Maximum acceptable slippage percentage for the swap (e.g., 1 for 1%)\n disableEstimate: boolean // Set to true to disable estimation of swap details\n allowPartialFill: boolean // Set to true to allow partial filling of the swap order\n chainId: string | Chain | number // Chain ID of the blockchain to use (e.g., 1 for Ethereum Mainnet)\n}\n\nexport type BridgeParams = {\n fromChain: string | Chain | number\n toChain: string | Chain | number\n fromToken: string\n toToken: string\n amount: number\n sort?: SocketSort\n recipient?: Address\n}\nexport enum SocketSort {\n output = 'output',\n gas = 'gas',\n time = 'time',\n}\n", "import { Address, Hex, isAddress, parseEther } from 'viem'\n\nimport {\n ERC20_CONTRACT_INTERFACE,\n ERC721_CONTRACT_INTERFACE,\n TransactionParams,\n} from '../common'\nimport { NFT, Token } from '../data'\nimport { Chain } from '../data/Chain'\nimport { ErrorCode, InvalidParameterError } from '../errors'\nimport {\n ApproveERC20Params,\n ApproveERC721Params,\n ApproveParams,\n ERC721TransferParams,\n TokenTransferParams,\n TransferParams,\n} from './types'\nexport const isERC721TransferParams = (\n obj: TransferParams,\n): obj is ERC721TransferParams => {\n return 'tokenId' in obj\n}\n\nexport const isTokenTransferParams = (\n obj: TransferParams,\n): obj is TokenTransferParams => {\n return 'amount' in obj && 'token' in obj && 'to' in obj\n}\n\nexport const erc721TransferTransactionParams = async (\n params: ERC721TransferParams,\n): Promise<TransactionParams> => {\n const { to, tokenId, collection, from } = params\n if (!isAddress(to ?? '') || !isAddress(from ?? '')) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'To/from address is not a valid address, please make sure it is a valid checksum address.',\n { params },\n 'Please make sure it is a valid checksum address',\n 'https://docs.fun.xyz',\n )\n }\n let tokenAddr\n if (isAddress(collection)) {\n tokenAddr = collection\n } else {\n tokenAddr = await NFT.getAddress(collection)\n }\n return ERC721_CONTRACT_INTERFACE.encodeTransactionParams(\n tokenAddr,\n 'transferFrom',\n [from, to, tokenId],\n )\n}\n\nexport const tokenTransferTransactionParams = async (\n params: TokenTransferParams,\n chain: Chain,\n): Promise<TransactionParams> => {\n const { to, amount, token } = params\n if (!isAddress(to)) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'To address is not a valid address, please make sure it is a valid checksum address.',\n { params },\n 'Please make sure it is a valid checksum address',\n 'https://docs.fun.xyz',\n )\n }\n const tokenObj = new Token(token, chain)\n if (tokenObj.isNative) {\n return {\n to: to as Address,\n data: '0x' as Hex,\n value: parseEther(`${amount}`),\n }\n } else {\n const tokenAddr = await tokenObj.getAddress()\n if (!tokenAddr) {\n throw new InvalidParameterError(\n ErrorCode.TokenNotFound,\n 'Token address not found. Please check the token passed in.',\n { params },\n 'Provide correct token.',\n 'https://docs.fun.xyz',\n )\n }\n const convertedAmount = await tokenObj.getDecimalAmount(amount)\n return ERC20_CONTRACT_INTERFACE.encodeTransactionParams(\n tokenAddr,\n 'transfer',\n [to, convertedAmount],\n )\n }\n}\n\nexport const tokenTransferFromTransactionParams = async (\n params: TokenTransferParams,\n chain: Chain,\n): Promise<TransactionParams> => {\n const { to, amount, token, from } = params\n if (!isAddress(to ?? '') || !isAddress(from ?? '')) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'To/from address is not a valid address, please make sure it is a valid checksum address.',\n { params },\n 'Please make sure it is a valid checksum address',\n 'https://docs.fun.xyz',\n )\n }\n const tokenObj = new Token(token, chain)\n if (tokenObj.isNative) {\n return {\n to: to as Address,\n data: '0x' as Hex,\n value: parseEther(`${amount}`),\n }\n } else {\n const tokenAddr = await tokenObj.getAddress()\n if (!tokenAddr) {\n throw new InvalidParameterError(\n ErrorCode.TokenNotFound,\n 'Token address not found. Please check the token passed in.',\n { params },\n 'Provide correct token.',\n 'https://docs.fun.xyz',\n )\n }\n const convertedAmount = await tokenObj.getDecimalAmount(amount)\n return ERC20_CONTRACT_INTERFACE.encodeTransactionParams(\n tokenAddr,\n 'transferFrom',\n [from, to, convertedAmount],\n )\n }\n}\n\nexport const isERC20ApproveParams = (\n obj: ApproveParams,\n): obj is ApproveERC20Params => {\n return 'amount' in obj && 'token' in obj\n}\n\nexport const isERC721ApproveParams = (\n obj: ApproveParams,\n): obj is ApproveERC721Params => {\n return 'tokenId' in obj && 'collection' in obj\n}\n\nexport const erc20ApproveTransactionParams = async (\n params: ApproveERC20Params,\n): Promise<TransactionParams> => {\n const { spender, amount, token } = params\n if (!isAddress(spender ?? '')) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Spender address is not a valid address, please make sure it is a valid checksum address.',\n { params },\n 'Please make sure it is a valid checksum address',\n 'https://docs.fun.xyz',\n )\n }\n\n // TODO: remove this fallback after refactoring -- Panda\n const chain = await Chain.getChain({\n chainIdentifier: (globalThis as any).globalEnvOption.chain,\n })\n const tokenObj = new Token(token, chain)\n const convertedAmount = await tokenObj.getDecimalAmount(amount)\n return ERC20_CONTRACT_INTERFACE.encodeTransactionParams(\n await tokenObj.getAddress(),\n 'approve',\n [spender, convertedAmount],\n )\n}\n\nexport const erc721ApproveTransactionParams = async (\n params: ApproveERC721Params,\n): Promise<TransactionParams> => {\n const { spender, tokenId, collection } = params\n if (!isAddress(spender ?? '')) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Spender address is not a valid address, please make sure it is a valid checksum address.',\n { params },\n 'Please make sure it is a valid checksum address',\n 'https://docs.fun.xyz',\n )\n }\n let tokenAddr\n if (isAddress(collection)) {\n tokenAddr = collection\n } else {\n tokenAddr = await NFT.getAddress(collection)\n }\n return ERC721_CONTRACT_INTERFACE.encodeTransactionParams(\n tokenAddr,\n 'approve',\n [spender, tokenId],\n )\n}\n", "import { Chain } from '../data'\nimport { ErrorCode, InvalidParameterError } from '../errors'\nimport { EnvOption, GlobalEnvOption } from './types'\n\nexport function getEnvOptions(): GlobalEnvOption {\n return (globalThis as any).globalEnvOption\n}\n\nexport function parseOptions(option: EnvOption) {\n const globalOptions = (globalThis as any).globalEnvOption\n return { ...globalOptions, ...option }\n}\n\nexport async function configureEnvironment(option: GlobalEnvOption) {\n const global = globalThis as any\n if (!global.globalEnvOption) {\n global.globalEnvOption = {}\n }\n const globalEnvOption = global.globalEnvOption\n\n globalEnvOption.apiKey = option.apiKey\n ? option.apiKey\n : globalEnvOption.apiKey\n if (!globalEnvOption.apiKey) {\n throw new InvalidParameterError(\n ErrorCode.MissingParameter,\n 'apiKey is required',\n { option },\n 'Provide apiKey when configureEnvironment.',\n 'https://docs.fun.xyz',\n )\n }\n\n if ((!option || !option.chain) && !globalEnvOption.chain) {\n globalEnvOption.chain = await Chain.getChain({ chainIdentifier: 5 })\n } else {\n globalEnvOption.chain = option.chain\n ? await Chain.getChain({ chainIdentifier: option.chain })\n : globalEnvOption.chain\n }\n\n if (option.gasSponsor !== null && option.gasSponsor !== undefined) {\n if (Object.keys(option.gasSponsor).length !== 0) {\n if (option.gasSponsor.token) {\n const usePermit = option.gasSponsor.usePermit === false ? false : true\n globalEnvOption.gasSponsor = { ...option.gasSponsor, usePermit }\n } else {\n globalEnvOption.gasSponsor = { ...option.gasSponsor }\n }\n } else {\n globalEnvOption.gasSponsor = {}\n }\n }\n globalEnvOption.fee = option.fee ? option.fee : globalEnvOption.fee\n globalEnvOption.skipDBAction =\n option.skipDBAction === null || option.skipDBAction === undefined\n ? globalEnvOption.skipDBAction\n : option.skipDBAction\n}\n", "import { Address } from 'viem'\n\nimport { TransactionParams } from '../common'\nimport { EnvOption } from '../config'\nimport { Chain } from '../data'\nimport { ContractInterface } from '../viem/ContractInterface'\nimport { PaymasterType } from './types'\n\nexport abstract class Sponsor {\n sponsorAddress?: Address\n contractInterface: ContractInterface\n name: string\n paymasterAddress?: Address\n paymasterType: PaymasterType\n chainId?: string\n\n constructor(\n options: EnvOption = (globalThis as any).globalEnvOption,\n contractInterface: ContractInterface,\n name: string,\n paymasterType: PaymasterType,\n ) {\n if (\n options.gasSponsor !== undefined &&\n options.gasSponsor.sponsorAddress !== undefined\n ) {\n this.sponsorAddress = options.gasSponsor.sponsorAddress\n }\n this.contractInterface = contractInterface\n this.name = name\n this.paymasterType = paymasterType\n }\n\n async getPaymasterAddress(\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Address> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const chainId = await chain.getChainId()\n if (!this.paymasterAddress && chainId !== this.chainId) {\n this.paymasterAddress = await chain.getAddress(this.name)\n this.chainId = chainId\n }\n return this.paymasterAddress!\n }\n\n abstract getPaymasterAndData(options: EnvOption): Promise<string>\n\n abstract stake(\n sponsor: string,\n amount: number,\n options: EnvOption,\n ): Promise<TransactionParams>\n\n abstract unstake(\n receiver: string,\n amount: number,\n options: EnvOption,\n ): Promise<TransactionParams>\n\n abstract lockDeposit(): Promise<TransactionParams>\n\n abstract unlockDepositAfter(blocksToWait: number): Promise<TransactionParams>\n\n /** True if the specified sponsor is in blacklist mode. **/\n async getListMode(\n sponsor: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<boolean> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getListMode',\n [sponsor],\n chain,\n )\n }\n\n async setToBlacklistMode(): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'setListMode',\n [true],\n )\n }\n\n async setToWhitelistMode(): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'setListMode',\n [false],\n )\n }\n\n async batchTransaction(\n transactions: TransactionParams[],\n ): Promise<TransactionParams> {\n const batchActionsData: any[] = transactions.map((transaction) =>\n transaction.data ? transaction.data : '0x',\n )\n const value = transactions.reduce(\n (acc, transaction) =>\n transaction.value ? acc + BigInt(transaction.value) : acc,\n 0n,\n )\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'batchActions',\n [batchActionsData],\n value,\n )\n }\n\n async addSpenderToWhitelist(spender: Address): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'setSpenderWhitelistMode',\n [spender, true],\n )\n }\n\n async removeSpenderFromWhitelist(\n spender: Address,\n ): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'setSpenderWhitelistMode',\n [spender, false],\n )\n }\n\n async batchWhitelistSpenders(\n spenders: Address[],\n modes: boolean[],\n ): Promise<TransactionParams> {\n const calldata: TransactionParams[] = []\n for (let i = 0; i < spenders.length; i++) {\n if (modes[i]) {\n calldata.push(await this.addSpenderToWhitelist(spenders[i]))\n } else {\n calldata.push(await this.removeSpenderFromWhitelist(spenders[i]))\n }\n }\n return await this.batchTransaction(calldata)\n }\n\n async addSpenderToBlacklist(spender: Address): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'setSpenderBlacklistMode',\n [spender, true],\n )\n }\n\n async removeSpenderFromBlacklist(\n spender: Address,\n ): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'setSpenderBlacklistMode',\n [spender, false],\n )\n }\n\n async batchBlacklistSpenders(\n spenders: Address[],\n modes: boolean[],\n ): Promise<TransactionParams> {\n const calldata: TransactionParams[] = []\n for (let i = 0; i < spenders.length; i++) {\n if (modes[i]) {\n calldata.push(await this.addSpenderToBlacklist(spenders[i]))\n } else {\n calldata.push(await this.removeSpenderFromBlacklist(spenders[i]))\n }\n }\n return await this.batchTransaction(calldata)\n }\n}\n", "import { Address } from 'viem'\n\nimport {\n CHECKOUT_PAYMASTER_CONTRACT_INTERFACE,\n TransactionParams,\n} from '../common'\nimport { EnvOption } from '../config'\nimport { Chain, Token } from '../data'\nimport { Sponsor } from './Sponsor'\nimport { PaymasterType } from './types'\n\nexport class CheckoutSponsor extends Sponsor {\n constructor(options: EnvOption = (globalThis as any).globalEnvOption) {\n super(\n options,\n CHECKOUT_PAYMASTER_CONTRACT_INTERFACE,\n 'checkoutPaymasterAddress',\n PaymasterType.CheckoutSponsor,\n )\n }\n\n async getPaymasterAndData(options: EnvOption): Promise<string> {\n const paymasterAddress = await this.getPaymasterAddress(options)\n return paymasterAddress.toLowerCase()\n }\n\n async stake(\n _sponsor: string,\n amount: number,\n options: EnvOption,\n ): Promise<TransactionParams> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const amountdec = await Token.getDecimalAmount('eth', amount, chain)\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'deposit',\n [],\n BigInt(amountdec),\n )\n }\n\n async unstake(\n receiver: string,\n amount: number,\n options: EnvOption,\n ): Promise<TransactionParams> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const amountdec = await Token.getDecimalAmount('eth', amount, chain)\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'withdrawTo',\n [receiver, amountdec],\n )\n }\n\n override async lockDeposit(): Promise<TransactionParams> {\n throw new Error(`lockDeposit is not supported on CheckoutSponsor`)\n }\n\n override async unlockDepositAfter(\n _blocksToWait: number,\n ): Promise<TransactionParams> {\n throw new Error(`unlockDepositAfter is not supported on CheckoutSponsor`)\n }\n\n /** True if the specified sponsor is in blacklist mode. **/\n override async getListMode(\n _sponsor: string,\n _options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<boolean> {\n throw new Error(`getListMode is not supported on CheckoutSponsor`)\n }\n\n override async setToBlacklistMode(): Promise<TransactionParams> {\n throw new Error(`setToBlacklistMode is not supported on Checkout Sponsor`)\n }\n\n override async setToWhitelistMode(): Promise<TransactionParams> {\n throw new Error(`setToWhitelistMode is not supported on Checkout Sponsor`)\n }\n\n override async batchTransaction(\n _transactions: TransactionParams[],\n ): Promise<TransactionParams> {\n throw new Error(`batchTransaction is not supported on Checkout Sponsor`)\n }\n\n override async addSpenderToWhitelist(\n _spender: Address,\n ): Promise<TransactionParams> {\n throw new Error(\n `addSpenderToWhitelist is not supported on Checkout Sponsor`,\n )\n }\n\n override async removeSpenderFromWhitelist(\n _spender: Address,\n ): Promise<TransactionParams> {\n throw new Error(\n `removeSpenderFromWhitelist is not supported on Checkout Sponsor`,\n )\n }\n\n override async batchWhitelistSpenders(\n _spenders: Address[],\n _modes: boolean[],\n ): Promise<TransactionParams> {\n throw new Error(\n `batchWhitelistSpenders is not supported on Checkout Sponsor`,\n )\n }\n\n override async addSpenderToBlacklist(\n _spender: Address,\n ): Promise<TransactionParams> {\n throw new Error(\n `addSpenderToBlacklist is not supported on Checkout Sponsor`,\n )\n }\n\n override async removeSpenderFromBlacklist(\n _spender: Address,\n ): Promise<TransactionParams> {\n throw new Error(\n `removeSpenderFromBlacklist is not supported on Checkout Sponsor`,\n )\n }\n\n override async batchBlacklistSpenders(\n _spenders: Address[],\n _modes: boolean[],\n ): Promise<TransactionParams> {\n throw new Error(\n `batchBlacklistSpenders is not supported on Checkout Sponsor`,\n )\n }\n}\n", "import { Address, concat } from 'viem'\n\nimport {\n GASLESS_PAYMASTER_CONTRACT_INTERFACE,\n GASLESS_SPONSOR_SUPPORT_CHAINS,\n TransactionParams,\n} from '../common'\nimport { EnvOption } from '../config'\nimport { Chain, Token } from '../data'\nimport { ErrorCode, ResourceNotFoundError } from '../errors'\nimport { Sponsor } from './Sponsor'\nimport { PaymasterType } from './types'\nexport class GaslessSponsor extends Sponsor {\n constructor(options: EnvOption = (globalThis as any).globalEnvOption) {\n super(\n options,\n GASLESS_PAYMASTER_CONTRACT_INTERFACE,\n 'gaslessPaymasterAddress',\n PaymasterType.GaslessSponsor,\n )\n }\n\n async getFunSponsorAddress(\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Address> {\n if (!this.sponsorAddress) {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n if (GASLESS_SPONSOR_SUPPORT_CHAINS.includes(await chain.getChainId())) {\n this.sponsorAddress = await chain.getAddress('funGaslessSponsorAddress')\n } else {\n throw new ResourceNotFoundError(\n ErrorCode.MissingParameter,\n 'The network you are working with does not support gasless Fun Sponsor. You will need to run and manage your own gasless sponsor.',\n {\n gaslessSponsorSupportChains: GASLESS_SPONSOR_SUPPORT_CHAINS,\n chain: await chain.getChainId(),\n },\n 'Manage your own gasless sponsor, or use a supported network.',\n 'https://docs.fun.xyz',\n )\n }\n }\n return this.sponsorAddress\n }\n\n async getPaymasterAndData(\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<string> {\n const paymasterAddress = await this.getPaymasterAddress(options)\n const sponsor = await this.getFunSponsorAddress(options)\n return concat([paymasterAddress, sponsor])\n }\n\n async stake(\n sponsor: Address,\n amount: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const amountdec = await Token.getDecimalAmount('eth', amount, chain)\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'addDepositTo',\n [sponsor, amountdec],\n BigInt(amountdec),\n )\n }\n\n async unstake(\n receiver: Address,\n amount: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const amountdec = await Token.getDecimalAmount('eth', amount, chain)\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'withdrawDepositTo',\n [receiver, amountdec],\n )\n }\n\n async getUnlockBlock(\n sponsor: Address,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<number> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getUnlockBlock',\n [sponsor],\n chain,\n )\n }\n\n async getLockState(\n sponsor: Address,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<boolean> {\n const unlockBlock = Number(await this.getUnlockBlock(sponsor, options))\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const client = await chain.getClient()\n const currentBlock = await client.getBlockNumber()\n return unlockBlock === 0 || unlockBlock > currentBlock\n }\n\n async getBalance(\n sponsor: Address,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<bigint> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getBalance',\n [sponsor],\n chain,\n )\n }\n\n async lockDeposit(): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'lockDeposit',\n [],\n )\n }\n\n async unlockDepositAfter(blocksToWait: number): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'unlockDepositAfter',\n [blocksToWait],\n )\n }\n\n async getSpenderBlacklistMode(\n spender: Address,\n sponsor: Address,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<boolean> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getSpenderBlacklistMode',\n [spender, sponsor],\n chain,\n )\n }\n\n async getSpenderWhitelistMode(\n spender: Address,\n sponsor: Address,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<boolean> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getSpenderWhitelistMode',\n [spender, sponsor],\n chain,\n )\n }\n\n static async getPaymasterAddress(\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Address> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await chain.getAddress(this.name)\n }\n}\n", "import { Address, concat, encodeAbiParameters } from 'viem'\n\nimport { addTransaction } from '../apis/PaymasterApis'\nimport { Auth } from '../auth'\nimport { TOKEN_SPONSOR_SUPPORT_CHAINS, TransactionParams } from '../common'\nimport {\n AddressZero,\n TOKEN_PAYMASTER_CONTRACT_INTERFACE,\n} from '../common/constants'\nimport { EnvOption } from '../config'\nimport { Chain, Operation, Token } from '../data'\nimport {\n ErrorCode,\n InvalidParameterError,\n ResourceNotFoundError,\n} from '../errors'\nimport { getPermitHash, getWalletPermitNonce } from '../utils'\nimport { Sponsor } from './Sponsor'\nimport { AllTokenData, PaymasterType } from './types'\n\nexport class TokenSponsor extends Sponsor {\n token: string\n\n constructor(options: EnvOption = (globalThis as any).globalEnvOption) {\n super(\n options,\n TOKEN_PAYMASTER_CONTRACT_INTERFACE,\n 'tokenPaymasterAddress',\n PaymasterType.TokenSponsor,\n )\n if (!options.gasSponsor?.token) {\n throw new InvalidParameterError(\n ErrorCode.MissingParameter,\n 'token field is missing',\n { gasSponsor: options.gasSponsor },\n 'Provide correct token name or address.',\n 'https://docs.fun.xyz',\n )\n }\n this.token = options.gasSponsor!.token!.toLowerCase()\n }\n\n async getFunSponsorAddress(\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Address> {\n if (!this.sponsorAddress) {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n if (TOKEN_SPONSOR_SUPPORT_CHAINS.includes(await chain.getChainId())) {\n this.sponsorAddress = await chain.getAddress('funTokenSponsorAddress')\n } else {\n throw new ResourceNotFoundError(\n ErrorCode.MissingParameter,\n 'The network you are working with does not support token Fun Sponsor. You will need to run and manage your own token sponsor.',\n {\n tokenSponsorSupportChains: TOKEN_SPONSOR_SUPPORT_CHAINS,\n chain: await chain.getChainId(),\n },\n 'Manage your own token sponsor, or use a supported network',\n 'https://docs.fun.xyz',\n )\n }\n }\n return this.sponsorAddress\n }\n\n async getPaymasterAndData(\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<string> {\n // TODO: temporary fallback, remove after refactoring -- Panda\n const chain = await Chain.getChain({\n chainIdentifier: (globalThis as any).globalEnvOption.chain,\n })\n const tokenAddress = await Token.getAddress(this.token, chain)\n const paymasterAddress = await this.getPaymasterAddress(options)\n const sponsor = await this.getFunSponsorAddress(options)\n return concat([paymasterAddress, sponsor, tokenAddress])\n }\n\n async getPaymasterAndDataPermit(\n partialOp: Operation,\n walletAddr: Address,\n userId: string,\n auth: Auth,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<string> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const estimateGasSignature = await auth.getEstimateGasSignature(\n userId,\n partialOp,\n )\n partialOp.userOp.signature = estimateGasSignature.toLowerCase()\n const estimationPaymasterAddress = await chain.getAddress(\n 'estimationPaymasterAddress',\n )\n const { callGasLimit, verificationGasLimit, preVerificationGas } =\n await chain.estimateOpGas({\n ...partialOp.userOp,\n paymasterAndData: estimationPaymasterAddress,\n })\n const { maxFeePerGas } = await chain.getFeeData()\n const paymasterAddress = await this.getPaymasterAddress(options)\n const requiredGas =\n (callGasLimit +\n (verificationGasLimit + 400_000n) * 3n +\n preVerificationGas) *\n BigInt(maxFeePerGas)\n const tokenAddress = await Token.getAddress(this.token, chain)\n const decAmount = await TOKEN_PAYMASTER_CONTRACT_INTERFACE.readFromChain(\n paymasterAddress,\n 'getTokenValueOfEth',\n [tokenAddress, requiredGas],\n chain,\n )\n const nonce = await getWalletPermitNonce(walletAddr, chain)\n const client = await chain.getClient()\n const chainId = await client.getChainId()\n const hash = await getPermitHash(\n tokenAddress,\n paymasterAddress,\n decAmount,\n nonce,\n walletAddr,\n BigInt(chainId),\n )\n const sig = await auth.signHash(hash)\n const encodedSig = encodeAbiParameters(\n [\n { type: 'address' },\n { type: 'address' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'bytes' },\n ],\n [tokenAddress, paymasterAddress, decAmount, nonce, sig],\n )\n const sponsor = await this.getFunSponsorAddress(options)\n const encodedAddresses = encodeAbiParameters(\n [{ type: 'address' }, { type: 'address' }],\n [sponsor, tokenAddress],\n )\n const encodedData = encodeAbiParameters(\n [{ type: 'bytes' }, { type: 'bytes' }],\n [encodedAddresses, encodedSig],\n )\n return concat([paymasterAddress, encodedData])\n }\n\n async stake(\n sponsor: Address,\n amount: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n const chainIdentifier =\n options.chain ?? (globalThis as any).globalEnvOption.chain\n const chain = await Chain.getChain({ chainIdentifier })\n const amountdec = await Token.getDecimalAmount('eth', amount, chain)\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'addEthDepositTo',\n [sponsor, amountdec],\n BigInt(amountdec),\n )\n }\n\n async unstake(\n receiver: Address,\n amount: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n // TODO: temporary fallback, remove after refactoring -- Panda\n const chainIdentifier =\n options.chain ?? (globalThis as any).globalEnvOption.chain\n const chain = await Chain.getChain({ chainIdentifier })\n const amountdec = await Token.getDecimalAmount('eth', amount, chain)\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'withdrawEthDepositTo',\n [receiver, amountdec],\n )\n }\n\n async getUnlockBlock(\n sponsor: Address,\n token: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<bigint> {\n // TODO: temporary fallback, remove after refactoring -- Panda\n const chain = await Chain.getChain({\n chainIdentifier: (globalThis as any).globalEnvOption.chain,\n })\n const tokenAddr = (await Token.isNative(token))\n ? AddressZero\n : await Token.getAddress(token, chain)\n return (await this.getAllTokenData(tokenAddr, sponsor, options)).unlockBlock\n }\n\n // false means unlocked, true means locked\n async getLockState(\n sponsor: Address,\n token: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<boolean> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const tokenAddr = (await Token.isNative(token))\n ? AddressZero\n : await Token.getAddress(token, chain)\n const unlockBlock = await this.getUnlockBlock(tokenAddr, sponsor)\n const provider = await chain.getClient()\n const currentBlock = await provider.getBlockNumber()\n return unlockBlock === 0n || unlockBlock > currentBlock\n }\n\n async getTokenInfo(\n token: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ) {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const tokenAddress = await Token.getAddress(token, chain)\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getToken',\n [tokenAddress],\n chain,\n )\n }\n\n async getAllTokenData(\n spender: Address,\n token: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<AllTokenData> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const tokenAddress = await Token.getAddress(token, chain)\n\n const data = await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getAllTokenData',\n [tokenAddress, spender],\n chain,\n )\n return {\n unlockBlock: data[0],\n tokenAmount: data[1],\n }\n }\n\n async getTokenBalance(\n spender: Address,\n token: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<bigint> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n\n const tokenData = new Token(token, chain)\n let tokenAddress\n if (tokenData.isNative) {\n tokenAddress = AddressZero\n } else {\n tokenAddress = await tokenData.getAddress()\n }\n\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getTokenBalance',\n [tokenAddress, spender],\n chain,\n )\n }\n\n async getAllTokens(options: EnvOption = (globalThis as any).globalEnvOption) {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getAllTokens',\n [],\n chain,\n )\n }\n\n async addUsableToken(\n oracle: string,\n token: string,\n aggregator: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const decimals = await Token.getDecimals(token, chain)\n const tokenAddress = await Token.getAddress(token, chain)\n const data = [oracle, tokenAddress, decimals, aggregator]\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'setTokenData',\n [data],\n )\n }\n\n async depositToken(\n token: string,\n spender: Address,\n amount: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const tokenObj = new Token(token, chain)\n const tokenAddress = await tokenObj.getAddress()\n const amountDec = await tokenObj.getDecimalAmount(amount)\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'addTokenDepositTo',\n [tokenAddress, spender, amountDec],\n )\n }\n\n async withdrawToken(\n token: string,\n receiver: Address,\n amount: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const tokenObj = new Token(token, chain)\n const tokenAddress = await tokenObj.getAddress()\n const amountdec = await tokenObj.getDecimalAmount(amount)\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'withdrawTokenDepositTo',\n [tokenAddress, receiver, amountdec],\n )\n }\n\n async lockTokenDeposit(\n token: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const tokenData = new Token(token, chain)\n const tokenAddress = tokenData.isNative\n ? AddressZero\n : await tokenData.getAddress()\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'lockTokenDeposit',\n [tokenAddress],\n )\n }\n\n async unlockTokenDepositAfter(\n token: string,\n blocksToWait: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const tokenData = new Token(token, chain)\n const tokenAddress = tokenData.isNative\n ? AddressZero\n : await tokenData.getAddress()\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'unlockTokenDepositAfter',\n [tokenAddress, blocksToWait],\n )\n }\n\n async lockDeposit(): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'lockTokenDeposit',\n [AddressZero],\n )\n }\n\n async unlockDepositAfter(blocksToWait: number): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'unlockTokenDepositAfter',\n [AddressZero, blocksToWait],\n )\n }\n\n async approve(\n approver: Address,\n token: string,\n amount: number,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n const gasSponsorAddress = await this.getPaymasterAddress()\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n addTransaction(\n await chain.getChainId(),\n Date.now(),\n '0x',\n {\n action: 'approve',\n amount,\n from: approver,\n to: await this.getPaymasterAddress(options),\n token,\n },\n this.paymasterType,\n approver,\n )\n return Token.approve(token, gasSponsorAddress, amount, chain)\n }\n\n async getSpenderBlacklisted(\n spender: Address,\n sponsor: Address,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<boolean> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getSpenderBlacklisted',\n [spender, sponsor],\n chain,\n )\n }\n\n async getSpenderWhitelisted(\n spender: Address,\n sponsor: Address,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<boolean> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getSpenderWhitelisted',\n [spender, sponsor],\n chain,\n )\n }\n\n async getTokenWhitelisted(\n sponsor: Address,\n token: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<boolean> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const tokenAddress = await Token.getAddress(token, chain)\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getTokenWhitelisted',\n [tokenAddress, sponsor],\n chain,\n )\n }\n\n async setTokenToWhitelistMode(): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'setTokenListMode',\n [false],\n )\n }\n\n async batchWhitelistTokens(\n tokens: string[],\n modes: boolean[],\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n\n const calldata: string[] = []\n for (let i = 0; i < tokens.length; i++) {\n const tokenAddress = await Token.getAddress(tokens[i], chain)\n calldata.push(\n this.contractInterface.encodeData('setTokenWhitelistMode', [\n tokenAddress,\n modes[i],\n ]),\n )\n }\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'batchActions',\n [calldata],\n )\n }\n\n async getTokenListMode(\n sponsor: Address,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ) {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getTokenListMode',\n [sponsor],\n chain,\n )\n }\n\n async getTokenBlacklisted(\n sponsor: Address,\n token: string,\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<boolean> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const tokenAddress = await Token.getAddress(token, chain)\n return await this.contractInterface.readFromChain(\n await this.getPaymasterAddress(options),\n 'getTokenBlacklisted',\n [tokenAddress, sponsor],\n chain,\n )\n }\n\n async setTokenToBlacklistMode(): Promise<TransactionParams> {\n return this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'setTokenListMode',\n [true],\n )\n }\n\n async batchBlacklistTokens(\n tokens: string[],\n modes: boolean[],\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<TransactionParams> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const calldata: TransactionParams[] = []\n for (let i = 0; i < tokens.length; i++) {\n const tokenAddress = await Token.getAddress(tokens[i], chain)\n calldata.push(\n this.contractInterface.encodeTransactionParams(\n await this.getPaymasterAddress(),\n 'setTokenBlacklistMode',\n [tokenAddress, modes[i]],\n ),\n )\n }\n return this.batchTransaction(calldata)\n }\n\n static async getPaymasterAddress(\n options: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Address> {\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n return await chain.getAddress(this.name)\n }\n}\n", "import {\n getAllWalletNFTs,\n getAllWalletNFTsByChainId,\n getAllWalletTokens,\n getAllWalletTokensByChainId,\n getMoonpayOffRampUrl,\n getMoonpayOnRampSupportedCurrencies,\n getMoonpayOnRampUrl,\n getWalletLidoWithdrawalsByChainId,\n MoonpayCurrency,\n} from '@funkit/api-base'\nimport {\n Address,\n concat,\n createPublicClient,\n encodeAbiParameters,\n Hex,\n http,\n isAddress,\n isHex,\n keccak256,\n pad,\n toBytes,\n} from 'viem'\n\nimport { FirstClassActions } from '../actions/FirstClassActions'\nimport {\n checkWalletAccessInitialization,\n initializeWalletAccess,\n} from '../apis/AccessControlApis'\nimport { getGroups } from '../apis/GroupApis'\nimport {\n createOp,\n deleteOp,\n executeOp,\n getFullReceipt,\n getOps,\n getOpsOfWallet,\n scheduleOp,\n signOp,\n} from '../apis/OperationApis'\nimport { addTransaction } from '../apis/PaymasterApis'\nimport { GroupMetadata } from '../apis/types'\nimport { addUserToWallet } from '../apis/UserApis'\nimport { Auth } from '../auth'\nimport {\n ENTRYPOINT_CONTRACT_INTERFACE,\n ExecutionReceipt,\n TransactionParams,\n WALLET_CONTRACT_INTERFACE,\n} from '../common'\nimport { AddressZero, FACTORY_CONTRACT_INTERFACE } from '../common/constants'\nimport { EnvOption, parseOptions } from '../config'\nimport {\n AuthType,\n Chain,\n encodeLoginData,\n encodeUserAuthInitData,\n InitCodeParams,\n LoginData,\n Operation,\n OperationStatus,\n OperationType,\n toBytes32Arr,\n Token,\n} from '../data'\nimport {\n ErrorCode,\n InternalFailureError,\n InvalidParameterError,\n} from '../errors'\nimport { CheckoutSponsor, GaslessSponsor, TokenSponsor } from '../sponsors'\nimport {\n generateRandomNonceKey,\n getWalletAddress,\n isGroupOperation,\n isSignatureMissing,\n isWalletInitOp,\n} from '../utils'\nimport { getPaymasterType } from '../utils/PaymasterUtils'\nimport { isBytes32 } from '../utils/TypeUtils'\nimport { FunWalletParams, User } from './types'\n\nexport class FunWallet extends FirstClassActions {\n walletUniqueId?: Hex\n userInfo?: Map<Hex, User>\n address?: Address\n\n /**\n * Creates FunWallet object\n * @constructor\n * @param {object} params - The parameters for the constructing fun wallet - (users, uniqueId) or walletAddr\n */\n constructor(params: FunWalletParams | string) {\n const chain = (globalThis as any).globalEnvOption.chain\n super(chain)\n if (typeof params === 'string') {\n if (isAddress(params as string)) {\n this.address = params as Address\n } else {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'string input must be an address type',\n params,\n 'Provide either (uniqueId, users) or walletAddr when constructing a FunWallet',\n 'https://docs.fun.xyz/how-to-guides/execute-transactions/create-funwallet#create-funwallet-manual-funwallet-creation',\n )\n }\n } else {\n const { users, uniqueId } = params as FunWalletParams\n if (!uniqueId || !isBytes32(uniqueId) || !users || users.length <= 0) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'uniqueId must be bytes32 and users must be non-empty',\n params,\n 'The uniqueId field should be a 32 byte Hexstring and the users field should be an array of User objects',\n 'https://docs.fun.xyz/how-to-guides/execute-transactions/create-funwallet#create-funwallet-manual-funwallet-creation',\n )\n }\n\n this.userInfo = new Map(\n users?.map((user) => {\n if (!user.userId || !isHex(user.userId)) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'userId is required and must be a hex string',\n users,\n 'Provide hex string userId when creating a FunWallet',\n 'https://docs.fun.xyz/how-to-guides/execute-transactions/create-funwallet#create-funwallet-manual-funwallet-creation',\n )\n }\n\n if (\n user.groupInfo &&\n (!Number.isInteger(user.groupInfo.threshold) ||\n !Array.isArray(user.groupInfo.memberIds) ||\n !user.groupInfo.memberIds.every((memberId) => isHex(memberId)))\n ) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'groupInfo must be an object with threshold as integer and memberIds as array of hex strings',\n users,\n 'Provide valid groupInfo when creating a FunWallet',\n 'https://docs.fun.xyz/how-to-guides/execute-transactions/create-funwallet#create-funwallet-manual-funwallet-creation',\n )\n }\n\n return [pad(user.userId, { size: 32 }), user] as [Hex, User]\n }),\n )\n\n this.walletUniqueId = uniqueId as Hex\n }\n }\n\n /**\n * Retrieves the wallet address associated with this FunWallet. The address should be the same for all EVM chains so no input is needed\n * If the address is not already cached, it fetches it using the wallet's unique ID and chain information.\n * @returns {Promise<Address>} The wallet address.\n */\n async getAddress(\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Address> {\n if (!this.address) {\n const chainIdentifier = txOptions.chain\n this.address = await getWalletAddress(\n await Chain.getChain({ chainIdentifier: chainIdentifier ?? 137 }),\n this.walletUniqueId!,\n )\n }\n return this.address!\n }\n\n /**\n * Retrieves the wallet address associated with the provided unique ID using the given API key.\n * @param {string} uniqueId - The unique ID of the wallet.\n * @param {string} apiKey - The API key to access the required resources.\n * @returns {Promise<Address>} The wallet address.\n */\n static async getAddress(uniqueId: string, apiKey: string): Promise<Address> {\n ;(globalThis as any).globalEnvOption.apiKey = apiKey\n return await getWalletAddress(\n await Chain.getChain({ chainIdentifier: 137 }),\n keccak256(toBytes(uniqueId)),\n )\n }\n\n /**\n * Retrieves the wallet address associated with the provided unique ID in an offline environment.\n * @param {string} uniqueId - The unique ID of the wallet.\n * @param {string} rpcUrl - The URL of the RPC endpoint for offline querying.\n * @param {Address} factoryAddress - The address of the factory contract.\n * @returns {Promise<Address>} The wallet address.\n */\n static async getAddressOffline(\n uniqueId: string,\n rpcUrl: string,\n factoryAddress: Address,\n ) {\n const client = await createPublicClient({\n transport: http(rpcUrl),\n })\n return await FACTORY_CONTRACT_INTERFACE.readFromChain(\n factoryAddress,\n 'getAddress',\n [keccak256(toBytes(uniqueId))],\n client,\n )\n }\n\n /**\n * Get all tokens for a specific chain\n * @param {string} chainId string version of the chainId or ALL. If empty, then default to the one in globalEnvOption\n * @param {boolean} onlyVerifiedTokens If true, only return alchemy tokens that are verified(filters spam) - defaults to false\n * @returns JSON\n */\n async getTokens(chainIdInput?: string, onlyVerifiedTokens = false) {\n let chainId\n if (!chainIdInput) {\n const chain = await Chain.getChain({\n chainIdentifier: (globalThis as any).globalEnvOption.chain,\n })\n chainId = await chain.getChainId()\n } else {\n chainId = chainIdInput\n }\n\n const walletAddress = await this.getAddress()\n return chainId === 'ALL'\n ? await getAllWalletTokens({\n walletAddress,\n onlyVerifiedTokens,\n apiKey: globalThis.globalEnvOption.apiKey,\n })\n : await getAllWalletTokensByChainId({\n chainId,\n walletAddress,\n onlyVerifiedTokens,\n apiKey: globalThis.globalEnvOption.apiKey,\n })\n }\n\n /**\n * Given an address and a chain, returns all NFTs owned by that address\n * @param {string} chainId string version of the chainId or ALL. If empty, then default to the one in globalEnvOption\n * @returns array\n */\n async getNFTs(chainIdInput?: string) {\n let chainId\n if (!chainIdInput) {\n const chain = await Chain.getChain({\n chainIdentifier: (globalThis as any).globalEnvOption.chain,\n })\n chainId = await chain.getChainId()\n } else {\n chainId = chainIdInput\n }\n\n const walletAddress = await this.getAddress()\n return chainId === 'ALL'\n ? await getAllWalletNFTs({\n walletAddress,\n apiKey: globalThis.globalEnvOption.apiKey,\n })\n : await getAllWalletNFTsByChainId({\n chainId,\n walletAddress,\n apiKey: globalThis.globalEnvOption.apiKey,\n })\n }\n\n async getLidoWithdrawals() {\n const walletAddress = await this.getAddress()\n return await getWalletLidoWithdrawalsByChainId({\n chainId: '1',\n walletAddress,\n apiKey: globalThis.globalEnvOption.apiKey,\n })\n }\n\n /**\n * Get all tokens on all supported chains. Merge tokens by symbol\n * @param {string} chainIdInput string version of the chainId or ALL. If empty, then default to the one in globalEnvOption\n * @param {*} onlyVerifiedTokens true if you want to filter out spam tokens(Uses alchemy lists)\n * @param {boolean} checkStatus true if you want to check if the address has any pending lido withdrawals\n * @returns JSON of all tokens owned by address\n */\n async getAssets(\n chainIdInput?: string,\n onlyVerifiedTokens = false,\n checkStatus = false,\n ) {\n let chainId\n if (!chainIdInput) {\n const chain = await Chain.getChain({\n chainIdentifier: (globalThis as any).globalEnvOption.chain,\n })\n chainId = await chain.getChainId()\n } else {\n chainId = chainIdInput\n }\n const tokens = await this.getTokens(chainId, onlyVerifiedTokens)\n const lidoWithdrawals = checkStatus ? await this.getLidoWithdrawals() : {}\n return { ...lidoWithdrawals, ...tokens }\n }\n\n /**\n * Retrieves the nonce value for the specified sender address and nonce key.\n * If the nonce is unavailable, a random nonce key is generated and returned as the nonce.\n * @param {string} sender - The sender's address.\n * @param {string} key - The nonce key (default: randomly generated).\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<bigint>} The nonce value.\n */\n async getNonce(\n sender: string,\n key = generateRandomNonceKey(),\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<bigint> {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const entryPointAddress = await chain.getAddress('entryPointAddress')\n let nonce = undefined\n let retryCount = 3\n while ((nonce === undefined || nonce === null) && retryCount > 0) {\n nonce = await ENTRYPOINT_CONTRACT_INTERFACE.readFromChain(\n entryPointAddress,\n 'getNonce',\n [sender, key],\n chain,\n )\n retryCount--\n }\n\n if (nonce !== undefined && nonce !== null) {\n return BigInt(nonce)\n } else {\n return BigInt(key << 64n)\n }\n }\n\n /**\n * Retrieves a list of operations associated with the wallet.\n * @param {OperationStatus} status - The status of operations to retrieve (default: OperationStatus.ALL).\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation[]>} A list of operations.\n */\n async getOperations(\n status: OperationStatus = OperationStatus.ALL,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation[]> {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n return await getOpsOfWallet(\n await this.getAddress(txOptions),\n await chain.getChainId(),\n status,\n )\n }\n\n /**\n * Retrieves a specific operation by its ID.\n * @param {Hex} opId - The ID of the operation to retrieve.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The requested operation.\n */\n async getOperation(\n opId: Hex,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n return (await getOps([opId], await chain.getChainId()))[0]\n }\n\n /**\n * Retrieves a list of users associated with the wallet and their potential corresponding group information.\n * @param {Auth} auth - The authentication instance for retrieving user information.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<User[]>} A list of users with their group information.\n */\n async getUsers(\n auth: Auth,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<User[]> {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const storedUserIds = await auth.getUserIds(\n await this.getAddress(txOptions),\n await chain.getChainId(),\n )\n const userIds = new Set([...storedUserIds])\n if (this.userInfo) {\n for (const userId of this.userInfo.keys()) {\n userIds.add(userId.toLowerCase() as Hex)\n }\n }\n\n const users: User[] = []\n const groupIds: Hex[] = []\n\n for (const userId of userIds) {\n if (\n pad(userId, { size: 32 }).toLowerCase() === (await auth.getUserId())\n ) {\n users.push({ userId: pad(userId, { size: 32 }) } as User)\n } else {\n groupIds.push(pad(userId, { size: 32 }))\n }\n }\n\n if (groupIds && groupIds.length > 0) {\n const groups: GroupMetadata[] = await getGroups(\n groupIds,\n await chain.getChainId(),\n )\n groups.forEach((group) => {\n users.push({\n userId: group.groupId,\n groupInfo: {\n threshold: group.threshold,\n memberIds: group.memberIds,\n },\n })\n })\n }\n\n return users\n }\n\n /**\n * Checks the deployment status of the wallet's address to determine if it's a contract.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<boolean>} `true` if the address is a contract, `false` otherwise.\n */\n async getDeploymentStatus(\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<boolean> {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n return await chain.addressIsContract(await this.getAddress(txOptions))\n }\n\n /**\n * Creates the wallet.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The operation to create the wallet.\n */\n async create(\n auth: Auth,\n userId: string,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const transactionParams: TransactionParams = {\n to: await this.getAddress(txOptions),\n data: '0x',\n value: 0n,\n }\n return await this.createOperation(\n auth,\n userId,\n transactionParams,\n txOptions,\n )\n }\n\n /**\n * Saves the wallet to the authentication system.\n * @param auth - The auth or signer to save the wallet to.\n * @param txOptions - The configuration options.\n * @returns A Promise that resolves when the wallet is saved to the authentication system.\n */\n async saveWalletToAuth(\n auth: Auth,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<void> {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const walletAddr = await this.getAddress(txOptions)\n const userId = await auth.getUserId()\n const users = await auth.getUserIds(walletAddr, await chain.getChainId())\n if (!users.includes(userId)) {\n if ((await checkWalletAccessInitialization(walletAddr)) === false) {\n await initializeWalletAccess(walletAddr, await auth.getAddress())\n }\n await addUserToWallet(\n await auth.getAddress(),\n await chain.getChainId(),\n walletAddr,\n [userId],\n this.walletUniqueId,\n )\n }\n }\n\n /**\n * Generates an on-ramp URL for the account address.\n * @param {Address} address - The account address (optional, defaults to the wallet's address).\n * @param {string} currencyCode - The currency code (optional, defaults to undefined to allow users to select).\n * @returns {Promise<string>} The on-ramp URL.\n */\n async onRamp(address?: Address, currencyCode?: string): Promise<string> {\n return await getMoonpayOnRampUrl({\n apiKey: (globalThis as any).globalEnvOption.apiKey,\n walletAddr: address ? address : await this.getAddress(),\n currencyCode: currencyCode ? currencyCode : undefined,\n })\n }\n\n /**\n * Generates an off-ramp URL for the account address.\n * @param {Address} address - The account address (optional, defaults to the wallet's address).\n * @returns {Promise<string>} The off-ramp URL.\n */\n async offRamp(address?: Address): Promise<string> {\n return await getMoonpayOffRampUrl({\n apiKey: (globalThis as any).globalEnvOption.apiKey,\n walletAddr: address ? address : await this.getAddress(),\n })\n }\n\n /**\n * Retrieves the supported currencies for on-ramp.\n * @returns {Promise<MoonpayCurrency[]>} The supported currencies.\n */\n async getSupportedCurrencies(): Promise<MoonpayCurrency[]> {\n return await getMoonpayOnRampSupportedCurrencies({\n apiKey: (globalThis as any).globalEnvOption.apiKey,\n })\n }\n\n /**\n * Creates a new operation to be associated with the wallet and prepares it for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the operation.\n * @param {TransactionParams} transactionParams - The parameters for the transaction.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The created and prepared operation.\n */\n async createOperation(\n auth: Auth,\n userId: string,\n transactionParams: TransactionParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n if (!userId || userId === '') {\n throw new InvalidParameterError(\n ErrorCode.MissingParameter,\n 'userId is required',\n { userId },\n 'Provide userId when createOperation',\n 'https://docs.fun.xyz/how-to-guides/execute-transactions#execute-transactions',\n )\n }\n userId = pad(userId as Hex, { size: 32 }).toLowerCase()\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const sender = await this.getAddress(txOptions)\n const initCode = (await chain.addressIsContract(sender))\n ? '0x'\n : await this.getThisInitCode(chain)\n let paymasterAndData = '0x'\n\n let maxFeePerGas, maxPriorityFeePerGas\n const chainId = await chain.getChainId()\n const OPStackChains = ['10', '8453']\n if (OPStackChains.includes(chainId)) {\n const gasPrice = await chain.getFeeData()\n maxFeePerGas = gasPrice.maxFeePerGas\n maxPriorityFeePerGas = gasPrice.maxPriorityFeePerGas\n } else {\n maxFeePerGas = 1n\n maxPriorityFeePerGas = 1n\n }\n\n const partialOp = {\n callData: await this.buildCalldata(\n auth,\n userId,\n transactionParams,\n txOptions,\n ),\n paymasterAndData,\n sender,\n maxFeePerGas,\n maxPriorityFeePerGas,\n initCode,\n nonce:\n txOptions.nonce !== null && txOptions.nonce !== undefined\n ? txOptions.nonce\n : await this.getNonce(sender),\n preVerificationGas: 100_000n,\n callGasLimit: BigInt(10e6),\n verificationGasLimit: BigInt(10e6),\n }\n\n if ((await chain.getChainId()) === '36865') {\n partialOp.callGasLimit = BigInt(10e5)\n partialOp.verificationGasLimit = BigInt(10e5)\n }\n\n const isGroupOp: boolean = (await auth.getUserId()) !== (userId as Hex)\n\n const operation: Operation = new Operation(partialOp, {\n chainId: await chain.getChainId(),\n opType: isGroupOp\n ? OperationType.GROUP_OPERATION\n : OperationType.SINGLE_OPERATION,\n authType: isGroupOp ? AuthType.MULTI_SIG : AuthType.ECDSA,\n walletAddr: await this.getAddress(txOptions),\n proposer: await auth.getAddress(),\n })\n\n if (isGroupOp) {\n operation.groupId = pad(userId as Hex, { size: 32 })\n }\n if (txOptions.gasSponsor && Object.keys(txOptions.gasSponsor).length > 0) {\n if (txOptions.gasSponsor.token) {\n const sponsor = new TokenSponsor(txOptions)\n if (txOptions.gasSponsor.usePermit) {\n paymasterAndData = (\n await sponsor.getPaymasterAndDataPermit(\n operation,\n await this.getAddress(txOptions),\n userId,\n auth,\n )\n ).toLowerCase()\n } else {\n paymasterAndData = (\n await sponsor.getPaymasterAndData(txOptions)\n ).toLowerCase()\n }\n } else if (txOptions.gasSponsor.useCheckoutSponsor) {\n const sponsor = new CheckoutSponsor(txOptions)\n paymasterAndData = (\n await sponsor.getPaymasterAndData(txOptions)\n ).toLowerCase()\n } else {\n const sponsor = new GaslessSponsor(txOptions)\n paymasterAndData = (\n await sponsor.getPaymasterAndData(txOptions)\n ).toLowerCase()\n }\n }\n operation.userOp.paymasterAndData = paymasterAndData\n\n const estimatedOperation = await this.estimateOperation(\n auth,\n userId,\n operation,\n txOptions,\n )\n\n if (txOptions.bypassInit) {\n estimatedOperation.userOp.initCode = '0x'\n }\n\n // sign the userOp directly here as we do not have the opId yet\n estimatedOperation.userOp.signature = await auth.signOp(\n estimatedOperation,\n chain,\n isGroupOperation(operation),\n )\n\n if (txOptions.skipDBAction !== true) {\n const opId = await createOp(estimatedOperation)\n estimatedOperation.opId = opId as Hex\n if (!(await checkWalletAccessInitialization(sender))) {\n await initializeWalletAccess(sender, await auth.getAddress())\n }\n }\n\n return estimatedOperation\n }\n\n /**\n * Signs an operation using the provided authentication instance and returns the signed operation.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {Operation} operation - The operation to be signed.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The signed operation.\n */\n async signOperation(\n auth: Auth,\n operation: Operation,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n operation = Operation.convertTypeToObject(operation)\n operation.userOp.signature = await auth.signOp(\n operation,\n chain,\n isGroupOperation(operation),\n )\n if (isGroupOperation(operation) && txOptions.skipDBAction !== true) {\n await signOp(\n operation.opId!,\n await chain.getChainId(),\n operation.userOp.signature as Hex,\n await auth.getAddress(),\n this.userInfo?.get(operation.groupId!)?.groupInfo?.threshold,\n )\n }\n\n return operation\n }\n\n /**\n * Executes an operation and returns the execution receipt.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {Operation} operation - The operation to be executed.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<ExecutionReceipt>} The execution receipt of the operation.\n */\n async executeOperation(\n auth: Auth,\n operation: Operation,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<ExecutionReceipt> {\n txOptions = parseOptions(txOptions)\n operation = Operation.convertTypeToObject(operation)\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const chainId = await chain.getChainId()\n\n if (txOptions.skipDBAction !== true) {\n // cache group info\n if (isGroupOperation(operation)) {\n const groups: GroupMetadata[] = await getGroups(\n [operation.groupId!],\n chainId,\n )\n if (groups && groups.length > 0) {\n // could be empty as a new wallet wants to create a group\n this.userInfo?.set(operation.groupId!, {\n userId: operation.groupId!,\n groupInfo: {\n threshold: groups[0].threshold,\n memberIds: groups[0].memberIds,\n },\n })\n }\n }\n }\n\n const threshold: number =\n this.userInfo?.get(operation.groupId!)?.groupInfo?.threshold ?? 1\n\n if (threshold <= 1) {\n if (!operation.userOp.signature || operation.userOp.signature === '0x') {\n operation.userOp.signature = await auth.signOp(\n operation,\n chain,\n isGroupOperation(operation),\n )\n }\n } else {\n if (txOptions.skipDBAction !== true) {\n // check remote collected signature\n const storedOps = await getOps([operation.opId!], chainId)\n\n let collectedSigCount: number\n if (\n isSignatureMissing(await auth.getUserId(), storedOps[0]?.signatures)\n ) {\n collectedSigCount = storedOps[0]?.signatures?.length\n ? storedOps[0]?.signatures?.length + 1\n : 1\n if (collectedSigCount >= threshold) {\n operation.userOp.signature = await auth.signOp(\n operation,\n chain,\n isGroupOperation(operation),\n )\n }\n } else {\n collectedSigCount = storedOps[0]?.signatures?.length ?? 1\n }\n\n if (collectedSigCount < threshold) {\n throw new InvalidParameterError(\n ErrorCode.InsufficientSignatures,\n 'Signatures are not sufficient to execute the operation',\n { threshold, collectedSigCount, chainId },\n 'Only execute operation with enough signatures',\n 'https://docs.fun.xyz/how-to-guides/execute-transactions#execute-transactions',\n )\n }\n } else {\n throw new InvalidParameterError(\n ErrorCode.InsufficientSignatures,\n 'Signatures are not sufficient to execute the operation',\n { threshold, chainId, skipDBAction: txOptions.skipDBAction },\n 'Only execute operation with enough signatures',\n 'https://docs.fun.xyz/how-to-guides/execute-transactions#execute-transactions',\n )\n }\n }\n\n let receipt: ExecutionReceipt\n if (isGroupOperation(operation)) {\n receipt = await executeOp({\n opId: operation.opId!,\n chainId,\n executedBy: await auth.getAddress(),\n entryPointAddress: await chain.getAddress('entryPointAddress'),\n signature: operation.userOp.signature as Hex,\n groupInfo: this.userInfo?.get(operation.groupId!)?.groupInfo,\n })\n } else {\n receipt = await executeOp({\n opId: operation.opId!,\n chainId,\n executedBy: await auth.getAddress(),\n entryPointAddress: await chain.getAddress('entryPointAddress'),\n signature: operation.userOp.signature as Hex,\n userOp: operation.userOp,\n })\n }\n receipt = await getFullReceipt(operation.opId, chainId, receipt.userOpHash)\n if (isWalletInitOp(operation.userOp) && txOptions.skipDBAction !== true) {\n await addUserToWallet(\n await auth.getAddress(),\n chainId,\n await this.getAddress(txOptions),\n Array.from(this.userInfo!.keys()),\n this.walletUniqueId,\n )\n\n if (txOptions?.gasSponsor?.sponsorAddress) {\n const paymasterType = getPaymasterType(txOptions)\n addTransaction(\n await chain.getChainId(),\n Date.now(),\n receipt.txId,\n {\n action: 'sponsor',\n amount: -1, //Get amount from lazy processing\n from: txOptions.gasSponsor.sponsorAddress,\n to: await this.getAddress(txOptions),\n token: 'eth',\n txid: receipt.txId,\n },\n paymasterType,\n txOptions.gasSponsor.sponsorAddress,\n )\n }\n }\n return receipt\n }\n\n /**\n * Schedules an operation for execution and returns the scheduled operation's ID.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {Operation} operation - The operation to be scheduled.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Hex>} The ID of the scheduled operation.\n */\n async scheduleOperation(\n auth: Auth,\n operation: Operation,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Hex> {\n txOptions = parseOptions(txOptions)\n operation = Operation.convertTypeToObject(operation)\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const chainId = await chain.getChainId()\n\n if (txOptions.skipDBAction !== true) {\n // cache group info\n if (isGroupOperation(operation)) {\n const groups: GroupMetadata[] = await getGroups(\n [operation.groupId!],\n chainId,\n )\n if (groups && groups.length > 0) {\n // could be empty as a new wallet wants to create a group\n this.userInfo?.set(operation.groupId!, {\n userId: operation.groupId!,\n groupInfo: {\n threshold: groups[0].threshold,\n memberIds: groups[0].memberIds,\n },\n })\n }\n }\n }\n\n const threshold: number =\n this.userInfo?.get(operation.groupId!)?.groupInfo?.threshold ?? 1\n\n if (threshold <= 1) {\n if (!operation.userOp.signature || operation.userOp.signature === '0x') {\n operation.userOp.signature = await auth.signOp(\n operation,\n chain,\n isGroupOperation(operation),\n )\n }\n } else {\n if (txOptions.skipDBAction !== true) {\n // check remote collected signature\n const storedOps = await getOps([operation.opId!], chainId)\n\n let collectedSigCount: number\n if (\n isSignatureMissing(await auth.getUserId(), storedOps[0]?.signatures)\n ) {\n collectedSigCount = storedOps[0]?.signatures?.length\n ? storedOps[0]?.signatures?.length + 1\n : 1\n if (collectedSigCount >= threshold) {\n operation.userOp.signature = await auth.signOp(\n operation,\n chain,\n isGroupOperation(operation),\n )\n }\n } else {\n collectedSigCount = storedOps[0]?.signatures?.length ?? 1\n }\n\n if (collectedSigCount < threshold) {\n throw new InvalidParameterError(\n ErrorCode.InsufficientSignatures,\n 'Signatures are not sufficient to execute the operation',\n { threshold, collectedSigCount, chainId },\n 'Only execute operation with enough signatures',\n 'https://docs.fun.xyz/how-to-guides/execute-transactions#execute-transactions',\n )\n }\n } else {\n throw new InvalidParameterError(\n ErrorCode.InsufficientSignatures,\n 'Signatures are not sufficient to execute the operation',\n { threshold, chainId, skipDBAction: txOptions.skipDBAction },\n 'Only execute operation with enough signatures',\n 'https://docs.fun.xyz/how-to-guides/execute-transactions#execute-transactions',\n )\n }\n }\n\n if (isGroupOperation(operation)) {\n await scheduleOp({\n opId: operation.opId!,\n chainId,\n scheduledBy: await auth.getAddress(),\n entryPointAddress: await chain.getAddress('entryPointAddress'),\n signature: operation.userOp.signature as Hex,\n groupInfo: this.userInfo?.get(operation.groupId!)?.groupInfo,\n })\n } else {\n await scheduleOp({\n opId: operation.opId!,\n chainId,\n scheduledBy: await auth.getAddress(),\n entryPointAddress: await chain.getAddress('entryPointAddress'),\n signature: operation.userOp.signature as Hex,\n userOp: operation.userOp,\n })\n }\n if (!operation.opId) {\n throw new InternalFailureError(\n ErrorCode.ServerFailure,\n 'Operation id is required',\n operation,\n 'Make sure you are scheduling a valid operation',\n 'https://docs.fun.xyz/',\n )\n }\n return operation.opId\n }\n\n /**\n * Removes an operation from the system using its ID.\n * @param {Auth} _ - The authentication instance (not used in this method).\n * @param {Hex} operationId - The ID of the operation to be removed.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<void>} A promise that resolves after the operation is removed.\n */\n async removeOperation(\n _: Auth,\n operationId: Hex,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<void> {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n await deleteOp(operationId, await chain.getChainId())\n }\n\n /**\n * Creates and prepares a rejection operation for an existing operation.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} groupId - The ID of the group to which the operation belongs.\n * @param {Operation} operation - The operation to be rejected.\n * @param {string} rejectionMessage - Optional rejection message.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared rejection operation.\n */\n async createRejectOperation(\n auth: Auth,\n groupId: string,\n operation: Operation,\n rejectionMessage?: string,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ) {\n const rejectOperation = await this.transfer(\n auth,\n groupId,\n { to: await this.getAddress(txOptions), amount: 0, token: 'eth' },\n {\n ...txOptions,\n skipDBAction: true,\n nonce: BigInt(operation.userOp.nonce),\n },\n )\n if (rejectionMessage) rejectOperation.message = rejectionMessage\n rejectOperation.relatedOpIds = [operation.opId!]\n rejectOperation.opType = OperationType.REJECTION\n rejectOperation.opId = (await createOp(rejectOperation)) as Hex\n return rejectOperation\n }\n\n /**\n * Estimates the gas cost for executing an operation and returns the updated operation with gas estimation details.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the operation.\n * @param {Operation} operation - The operation for which to estimate gas.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The updated operation with gas estimation details.\n */\n async estimateOperation(\n auth: Auth,\n userId: string,\n operation: Operation,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const estimateGasSignature = await auth.getEstimateGasSignature(\n userId,\n operation,\n )\n operation.userOp.signature = estimateGasSignature.toLowerCase()\n const estimationPaymasterAddress = await chain.getAddress(\n 'estimationPaymasterAddress',\n )\n const paymasterAndData = operation.userOp.paymasterAndData\n const res = await chain.estimateOpGas({\n ...operation.userOp,\n paymasterAndData: estimationPaymasterAddress,\n })\n operation.userOp = {\n ...operation.userOp,\n ...res,\n paymasterAndData,\n }\n\n const { maxFeePerGas, maxPriorityFeePerGas } = await chain.getFeeData()\n operation.userOp.maxFeePerGas = maxFeePerGas\n operation.userOp.maxPriorityFeePerGas = maxPriorityFeePerGas\n return operation\n }\n\n private async getThisInitCode(chain: Chain) {\n const owners: Hex[] = Array.from(this.userInfo!.keys())\n const entryPointAddress = await chain.getAddress('entryPointAddress')\n const factoryAddress = await chain.getAddress('factoryAddress')\n const rbac = await chain.getAddress('rbacAddress')\n const userAuth = await chain.getAddress('userAuthAddress')\n\n const loginData: LoginData = {\n salt: this.walletUniqueId!,\n }\n\n const rbacInitData = toBytes32Arr(owners)\n\n let userAuthInitData = '0x' as Hex\n const groupUsers: User[] = Array.from(this.userInfo!.values()).filter(\n (user) => user.groupInfo !== null && user.groupInfo !== undefined,\n )\n if (groupUsers.length > 0) {\n userAuthInitData = encodeUserAuthInitData(groupUsers)\n }\n\n const initCodeParams: InitCodeParams = {\n entryPointAddress,\n factoryAddress,\n implementationAddress: AddressZero,\n loginData,\n verificationAddresses: [rbac, userAuth],\n verificationData: [rbacInitData, userAuthInitData],\n }\n\n return this.getInitCode(initCodeParams)\n }\n\n private getInitCode(input: InitCodeParams) {\n const encodedVerificationInitdata = encodeAbiParameters(\n [\n {\n type: 'address[]',\n name: 'verificationAddresses',\n },\n {\n type: 'bytes[]',\n name: 'verificationData',\n },\n ],\n [input.verificationAddresses, input.verificationData],\n )\n const initializerCallData = WALLET_CONTRACT_INTERFACE.encodeData(\n 'initialize',\n [input.entryPointAddress, encodedVerificationInitdata],\n )\n\n const data = FACTORY_CONTRACT_INTERFACE.encodeData('createAccount', [\n initializerCallData,\n encodeLoginData(input.loginData),\n ])\n return concat([input.factoryAddress, data])\n }\n\n /**\n * Encodes arbitrary transactions calls to include fees\n * @param params Transaction Params, generated from various calldata generating functions\n * @param options EnvOptions to read fee data from\n * @returns calldata to be passed into createUserOperation\n */\n private async buildCalldata(\n auth: Auth,\n userId: string,\n params: TransactionParams,\n options: EnvOption,\n ): Promise<Hex> {\n if (!params.value) {\n params.value = 0n\n }\n if (options.fee) {\n if (\n !options.fee.token &&\n options.gasSponsor &&\n options.gasSponsor.token\n ) {\n options.fee.token = options.gasSponsor.token\n }\n if (!options.fee.token) {\n throw new InvalidParameterError(\n ErrorCode.MissingParameter,\n 'EnvOption.fee.token or EnvOption.gasSponsor.token is required',\n { options },\n 'Provide EnvOption.fee.token or EnvOption.gasSponsor.token when calling wallet.createOperation',\n 'https://docs.fun.xyz/how-to-guides/execute-transactions#execute-transactions',\n )\n }\n if (!options.fee.recipient) {\n throw new InvalidParameterError(\n ErrorCode.MissingParameter,\n 'EnvOption.fee.recipient is required',\n { options },\n 'Provide EnvOption.fee.recipient when calling wallet.createOperation',\n 'https://docs.fun.xyz/how-to-guides/execute-transactions#execute-transactions',\n )\n }\n\n const chain = await Chain.getChain({ chainIdentifier: options.chain })\n const token = new Token(options.fee.token, chain)\n if (options.fee.gasPercent && !token.isNative) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameterCombination,\n 'GasPercent is only valid for native tokens',\n { options },\n 'Use native token as the fee token if you want to charge fee based on percentage',\n 'https://docs.fun.xyz/how-to-guides/configure-environment/set-developer-fee',\n )\n }\n\n if (token.isNative) {\n options.fee.token = AddressZero\n } else {\n options.fee.token = await token.getAddress()\n }\n\n if (options.fee.amount) {\n options.fee.amount = Number(\n await token.getDecimalAmount(options.fee.amount),\n )\n } else if (options.fee.gasPercent) {\n const feedata = [options.fee.token, options.fee.recipient, 1]\n const estimateGasCalldata = WALLET_CONTRACT_INTERFACE.encodeData(\n 'execFromEntryPointWithFee',\n [params.to, params.value, params.data, feedata],\n )\n const operation = await this.createOperation(\n auth,\n userId,\n { to: params.to, value: params.value, data: estimateGasCalldata },\n { ...options, fee: undefined },\n )\n const gasUsed = await operation.getMaxTxCost()\n options.fee.amount = Math.ceil(\n (Number(gasUsed) * options.fee.gasPercent) / 100,\n )\n } else {\n throw new InvalidParameterError(\n ErrorCode.MissingParameter,\n 'EnvOption.fee.amount or EnvOption.fee.gasPercent is required',\n { options },\n 'Provide either EnvOption.fee.amount or EnvOption.fee.gasPercent when calling wallet.createOperation',\n 'https://docs.fun.xyz/how-to-guides/configure-environment/set-developer-fee',\n )\n }\n const feedata = [\n options.fee.token,\n options.fee.recipient,\n options.fee.amount,\n ]\n return WALLET_CONTRACT_INTERFACE.encodeData('execFromEntryPointWithFee', [\n params.to,\n params.value,\n params.data,\n feedata,\n ])\n } else {\n return WALLET_CONTRACT_INTERFACE.encodeData('execFromEntryPoint', [\n params.to,\n params.value,\n params.data,\n ])\n }\n }\n}\n", "import { Address, pad } from 'viem'\n\nimport { Auth } from '../auth'\nimport { TransactionParams } from '../common'\nimport { EnvOption } from '../config'\nimport { Chain, Operation } from '../data'\nimport {\n ErrorCode,\n InvalidParameterError,\n ResourceNotFoundError,\n} from '../errors'\nimport { getOnChainGroupData } from '../utils/GroupUtils'\nimport {\n addOwnerTxParams,\n createSessionKeyTransactionParams,\n removeOwnerTxParams,\n} from './AccessControl'\nimport { createExecuteBatchTxParams } from './BatchActions'\nimport { bridgeTransactionParams } from './Bridge'\nimport {\n createGroupTxParams,\n removeGroupTxParams,\n updateGroupTxParams,\n} from './Group'\nimport { limitSwapOrderTransactionParams } from './LimitOrder'\nimport {\n finishUnstakeTransactionParams,\n isFinishUnstakeParams,\n isRequestUnstakeParams,\n requestUnstakeTransactionParams,\n stakeTransactionParams,\n} from './Stake'\nimport {\n oneInchSupported,\n oneInchTransactionParams,\n uniswapV2SwapTransactionParams,\n uniswapV3Supported,\n uniswapV3SwapTransactionParams,\n} from './Swap'\nimport {\n erc20ApproveTransactionParams,\n erc721ApproveTransactionParams,\n erc721TransferTransactionParams,\n isERC20ApproveParams,\n isERC721ApproveParams,\n isERC721TransferParams,\n isTokenTransferParams,\n tokenTransferFromTransactionParams,\n tokenTransferTransactionParams,\n} from './Token'\nimport {\n AddOwnerParams,\n AddUserToGroupParams,\n ApproveParams,\n BridgeParams,\n CreateGroupParams,\n FinishUnstakeParams,\n LimitOrderParam,\n RemoveGroupParams,\n RemoveOwnerParams,\n RemoveUserFromGroupParams,\n RequestUnstakeParams,\n SessionKeyParams,\n StakeParams,\n SwapParams,\n TransferParams,\n UpdateGroupParams,\n UpdateThresholdOfGroupParams,\n} from './types'\n\nexport abstract class FirstClassActions {\n protected chain: Chain\n\n constructor(chain: Chain) {\n this.chain = chain\n }\n\n /**\n * Creates a new operation to be associated with the wallet and prepares it for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the operation.\n * @param {TransactionParams} transactionParams - The parameters for the transaction.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The created and prepared operation.\n */\n abstract createOperation(\n auth: Auth,\n userId: string,\n transactionParams: TransactionParams,\n txOptions: EnvOption,\n ): Promise<Operation>\n\n /**\n * Retrieves the wallet address associated with this FunWallet. The address should be the same for all EVM chains so no input is needed\n * If the address is not already cached, it fetches it using the wallet's unique ID and chain information.\n * @returns {Promise<Address>} The wallet address.\n */\n abstract getAddress(): Promise<Address>\n\n async bridge(\n auth: Auth,\n userId: string,\n params: BridgeParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const paramsCopy = JSON.parse(JSON.stringify(params))\n paramsCopy.recipient ??= await this.getAddress()\n const transactionParams = await bridgeTransactionParams(\n paramsCopy,\n await this.getAddress(),\n this.chain,\n )\n return this.createOperation(auth, userId, transactionParams, txOptions)\n }\n\n /**\n * Initiates a swap operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the swap.\n * @param {SwapParams} params - The parameters for the swap operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared swap operation.\n */\n async swap(\n auth: Auth,\n userId: string,\n params: SwapParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n if (!params.tokenIn) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Missing tokenIn parameter in the swap params object.',\n { params },\n '',\n 'https://docs.fun.xyz',\n )\n }\n if (!params.tokenOut) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Missing tokenOut parameter in the swap params object.',\n { params },\n '',\n 'https://docs.fun.xyz',\n )\n }\n if (!params.inAmount) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Missing inAmount parameter in the swap params object.',\n { params },\n '',\n 'https://docs.fun.xyz',\n )\n }\n let transactionParams: TransactionParams\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const chainId = Number(await chain.getChainId())\n params.recipient ??= await this.getAddress()\n if (oneInchSupported.includes(chainId)) {\n transactionParams = await oneInchTransactionParams(\n params,\n await this.getAddress(),\n txOptions,\n )\n } else if (uniswapV3Supported.includes(chainId)) {\n transactionParams = await uniswapV3SwapTransactionParams(\n params,\n txOptions,\n )\n } else if (chainId === 8453) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Swap is not supported on Base',\n { params },\n 'Use a different chain or a different first class method',\n 'https://docs.fun.xyz',\n )\n } else {\n transactionParams = await uniswapV2SwapTransactionParams(\n params,\n txOptions,\n )\n }\n return await this.createOperation(\n auth,\n userId,\n transactionParams,\n txOptions,\n )\n }\n\n /**\n * Initiates a limit swap order operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the limit swap order.\n * @param {LimitOrderParam} params - The parameters for the limit swap order.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared limit swap order operation.\n */\n async limitSwapOrder(\n auth: Auth,\n userId: string,\n params: LimitOrderParam,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const transactionParams: TransactionParams =\n await limitSwapOrderTransactionParams(params, this.chain)\n return await this.createOperation(\n auth,\n userId,\n transactionParams,\n txOptions,\n )\n }\n\n /**\n * Initiates a transfer operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the transfer.\n * @param {TransferParams} params - The parameters for the transfer.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared transfer operation.\n * @throws {InvalidParameterError} When provided parameters are missing or incorrect.\n */\n async transfer(\n auth: Auth,\n userId: string,\n params: TransferParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const overrideChain = await Chain.getChain({\n chainIdentifier: txOptions?.chain,\n })\n let transactionParams: TransactionParams\n if (isERC721TransferParams(params)) {\n params.from = params.from ? params.from : await this.getAddress()\n transactionParams = await erc721TransferTransactionParams(params)\n } else if (isTokenTransferParams(params)) {\n if (params.from) {\n transactionParams = await tokenTransferFromTransactionParams(\n params,\n overrideChain ?? this.chain,\n )\n } else {\n transactionParams = await tokenTransferTransactionParams(\n params,\n overrideChain ?? this.chain,\n )\n }\n } else {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Params were missing or incorrect',\n { params },\n 'Provide correct transfer params.',\n 'https://docs.fun.xyz',\n )\n }\n return await this.createOperation(\n auth,\n userId,\n transactionParams,\n txOptions,\n )\n }\n\n /**\n * Initiates a erc20/erc721 token approval operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the token approval.\n * @param {ApproveParams} params - The parameters for the token approval.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared token approval operation.\n * @throws {InvalidParameterError} When provided parameters are missing or incorrect.\n */\n async tokenApprove(\n auth: Auth,\n userId: string,\n params: ApproveParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n let transactionParams\n if (isERC20ApproveParams(params)) {\n transactionParams = await erc20ApproveTransactionParams(params)\n } else if (isERC721ApproveParams(params)) {\n transactionParams = await erc721ApproveTransactionParams(params)\n } else {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Params were missing or incorrect',\n { params },\n 'Provide correct token approve params.',\n 'https://docs.fun.xyz',\n )\n }\n return await this.createOperation(\n auth,\n userId,\n transactionParams,\n txOptions,\n )\n }\n\n /**\n * Initiates a stake operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the stake operation.\n * @param {StakeParams} params - The parameters for the stake operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared stake operation.\n */\n async stake(\n auth: Auth,\n userId: string,\n params: StakeParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const transactionParams = await stakeTransactionParams(params, txOptions)\n return await this.createOperation(\n auth,\n userId,\n transactionParams,\n txOptions,\n )\n }\n\n /**\n * Initiates an unstake operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the unstake operation.\n * @param {RequestUnstakeParams | FinishUnstakeParams} params - The parameters for the unstake operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared unstake operation.\n * @throws {InvalidParameterError} When provided parameters are missing or incorrect.\n */\n async unstake(\n auth: Auth,\n userId: string,\n params: RequestUnstakeParams | FinishUnstakeParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n params.recipient ??= await this.getAddress()\n let transactionParams: TransactionParams\n if (isRequestUnstakeParams(params)) {\n transactionParams = await requestUnstakeTransactionParams(\n params as RequestUnstakeParams,\n txOptions,\n )\n } else if (isFinishUnstakeParams(params)) {\n transactionParams = await finishUnstakeTransactionParams(\n params as FinishUnstakeParams,\n txOptions,\n )\n } else {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Params were missing or incorrect',\n { params },\n 'Provide correct unstake params.',\n 'https://docs.fun.xyz',\n )\n }\n return await this.createOperation(\n auth,\n userId,\n transactionParams,\n txOptions,\n )\n }\n\n /**\n * Initiates a session key creation operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the session key creation.\n * @param {SessionKeyParams} params - The parameters for the session key creation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared session key creation operation.\n */\n async createSessionKey(\n auth: Auth,\n userId: string,\n params: SessionKeyParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const transactionParams = await createSessionKeyTransactionParams(\n params,\n txOptions,\n )\n return await this.createOperation(\n auth,\n userId,\n transactionParams,\n txOptions,\n )\n }\n\n /**\n * Initiates an add owner operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the add owner operation.\n * @param {AddOwnerParams} params - The parameters for the add owner operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared add owner operation.\n */\n async addOwner(\n auth: Auth,\n userId: string,\n params: AddOwnerParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const txParams = await addOwnerTxParams(params, txOptions)\n return await this.createOperation(auth, userId, txParams, txOptions)\n }\n\n /**\n * Initiates a remove owner operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the remove owner operation.\n * @param {RemoveOwnerParams} params - The parameters for the remove owner operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared remove owner operation.\n */\n async removeOwner(\n auth: Auth,\n userId: string,\n params: RemoveOwnerParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const txParams = await removeOwnerTxParams(params, txOptions)\n return await this.createOperation(auth, userId, txParams, txOptions)\n }\n\n /**\n * Initiates a create group operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the create group operation.\n * @param {CreateGroupParams} params - The parameters for the create group operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared create group operation.\n */\n async createGroup(\n auth: Auth,\n userId: string,\n params: CreateGroupParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const txParams = await createGroupTxParams(params, txOptions)\n return await this.createOperation(auth, userId, txParams, txOptions)\n }\n\n /**\n * Initiates an add user to group operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the add user to group operation.\n * @param {AddUserToGroupParams} params - The parameters for the add user to group operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared add user to group operation.\n */\n async addUserToGroup(\n auth: Auth,\n userId: string,\n params: AddUserToGroupParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n params.userId = pad(params.userId, { size: 32 })\n params.groupId = pad(params.groupId, { size: 32 })\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const onChainGroupData = await getOnChainGroupData(\n params.groupId,\n chain,\n await this.getAddress(),\n )\n if (!onChainGroupData || onChainGroupData.memberIds.length === 0) {\n throw new ResourceNotFoundError(\n ErrorCode.GroupNotFound,\n 'group is not found',\n { params },\n 'Provide correct groupId and chainId.',\n 'https://docs.fun.xyz',\n )\n }\n\n const originalMembers = new Set(onChainGroupData.memberIds)\n const members = new Set(onChainGroupData.memberIds)\n members.add(params.userId)\n if (members.size <= originalMembers.size) {\n throw new InvalidParameterError(\n ErrorCode.UserAlreadyExists,\n 'user already exists in group',\n { params, originalMembers, userId: params.userId },\n 'Catch this error and swallow it as the user is already added.',\n 'https://docs.fun.xyz',\n )\n }\n\n const updateGroupParams: UpdateGroupParams = {\n groupId: params.groupId,\n group: {\n userIds: Array.from(members),\n threshold: onChainGroupData.threshold,\n },\n }\n\n const txParams = await updateGroupTxParams(updateGroupParams, txOptions)\n return await this.createOperation(auth, userId, txParams, txOptions)\n }\n\n /**\n * Initiates a remove user from group operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the remove user from group operation.\n * @param {RemoveUserFromGroupParams} params - The parameters for the remove user from group operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared remove user from group operation.\n */\n async removeUserFromGroup(\n auth: Auth,\n userId: string,\n params: RemoveUserFromGroupParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n params.userId = pad(params.userId, { size: 32 })\n params.groupId = pad(params.groupId, { size: 32 })\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const onChainGroupData = await getOnChainGroupData(\n params.groupId,\n chain,\n await this.getAddress(),\n )\n if (!onChainGroupData || onChainGroupData.memberIds.length === 0) {\n throw new ResourceNotFoundError(\n ErrorCode.GroupNotFound,\n 'group is not found',\n { params },\n 'Provide correct groupId and chainId.',\n 'https://docs.fun.xyz',\n )\n }\n\n const originalMembers = new Set(onChainGroupData.memberIds)\n const members = new Set(onChainGroupData.memberIds)\n members.delete(params.userId)\n if (members.size >= originalMembers.size) {\n throw new ResourceNotFoundError(\n ErrorCode.UserNotFound,\n 'user does not exist in group',\n { params, originalMembers, userId: params.userId },\n 'Catch this error and swallow it as the user does not exist in the group.',\n 'https://docs.fun.xyz',\n )\n }\n\n const updateGroupParams: UpdateGroupParams = {\n groupId: params.groupId,\n group: {\n userIds: Array.from(members),\n threshold: onChainGroupData.threshold,\n },\n }\n const txParams = await updateGroupTxParams(updateGroupParams, txOptions)\n return await this.createOperation(auth, userId, txParams, txOptions)\n }\n\n /**\n * Initiates an update threshold of group operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the update threshold of group operation.\n * @param {UpdateThresholdOfGroupParams} params - The parameters for the update threshold of group operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared update threshold of group operation.\n */\n async updateThresholdOfGroup(\n auth: Auth,\n userId: string,\n params: UpdateThresholdOfGroupParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n params.groupId = pad(params.groupId, { size: 32 })\n const chain = await Chain.getChain({ chainIdentifier: txOptions.chain })\n const onChainGroupData = await getOnChainGroupData(\n params.groupId,\n chain,\n await this.getAddress(),\n )\n if (!onChainGroupData || onChainGroupData.memberIds.length === 0) {\n throw new ResourceNotFoundError(\n ErrorCode.GroupNotFound,\n 'group is not found',\n { params },\n 'Provide correct groupId and chainId.',\n 'https://docs.fun.xyz',\n )\n }\n\n if (\n !Number.isInteger(params.threshold) ||\n params.threshold < 1 ||\n params.threshold > onChainGroupData.memberIds.length\n ) {\n throw new InvalidParameterError(\n ErrorCode.InvalidThreshold,\n 'threshold can not be 0 or bigger than number of members in the group',\n { params, memberIds: onChainGroupData.memberIds },\n 'Provide proper threshold number.',\n 'https://docs.fun.xyz',\n )\n }\n\n const updateGroupParams: UpdateGroupParams = {\n groupId: params.groupId,\n group: {\n userIds: onChainGroupData.memberIds,\n threshold: params.threshold,\n },\n }\n const txParams = await updateGroupTxParams(updateGroupParams, txOptions)\n return await this.createOperation(auth, userId, txParams, txOptions)\n }\n\n /**\n * Initiates a remove group operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the remove group operation.\n * @param {RemoveGroupParams} params - The parameters for the remove group operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared remove group operation.\n */\n async removeGroup(\n auth: Auth,\n userId: string,\n params: RemoveGroupParams,\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n params.groupId = pad(params.groupId, { size: 32 })\n const txParams = await removeGroupTxParams(params, txOptions)\n return await this.createOperation(auth, userId, txParams, txOptions)\n }\n\n /**\n * Initiates a batch operation and returns the prepared operation for execution.\n * @param {Auth} auth - The authentication instance for the user.\n * @param {string} userId - The ID of the user initiating the batch operation.\n * @param {TransactionParams[]} params - An array of transaction parameters for the batch operation.\n * @param {EnvOption} txOptions - Transaction environment options (default: global environment options).\n * @returns {Promise<Operation>} The prepared batch operation.\n */\n async createBatchOperation(\n auth: Auth,\n userId: string,\n params: TransactionParams[],\n txOptions: EnvOption = (globalThis as any).globalEnvOption,\n ): Promise<Operation> {\n const walletAddress = await this.getAddress()\n const txParams = createExecuteBatchTxParams(params, walletAddress)\n return await this.createOperation(auth, userId, txParams, txOptions)\n }\n}\n", "import { Address, concat, decodeAbiParameters, Hex, keccak256 } from 'viem'\n\nimport { WALLET_CONTRACT_INTERFACE } from '../common'\nimport { Chain } from '../data'\nimport { GroupInfo } from '../wallet'\n\nexport async function getOnChainGroupData(\n groupId: Hex,\n chain: Chain,\n walletAddr: Address,\n): Promise<GroupInfo> {\n const userAuthContractAddr = await chain.getAddress('userAuthAddress')\n const groupKey = keccak256(concat([groupId, userAuthContractAddr]))\n const storedGroupData: Hex = await WALLET_CONTRACT_INTERFACE.readFromChain(\n walletAddr,\n 'getState',\n [groupKey],\n chain,\n )\n if (storedGroupData === '0x') {\n return {\n memberIds: [],\n threshold: 0,\n }\n } else {\n const [storedGroup] = decodeAbiParameters(\n [\n {\n type: 'tuple',\n components: [{ type: 'bytes32[]' }, { type: 'uint256' }],\n },\n ],\n storedGroupData,\n )\n return {\n memberIds: storedGroup[0] as Hex[],\n threshold: Number(storedGroup[1]),\n }\n }\n}\n", "import { Address } from 'viem'\n\nimport { API_URL } from '../common/constants'\nimport { ErrorCode, ResourceNotFoundError } from '../errors'\nimport { sendGetRequest, sendPostRequest } from '../utils/ApiUtils'\n\nexport async function getSocketBridgeQuote(\n recipient: string,\n walletAddress: string,\n fromChain: string,\n toChain: string,\n fromToken: string,\n toToken: string,\n amount: bigint,\n sort: string,\n): Promise<any> {\n const params = new URLSearchParams({\n recipient,\n fromChainId: fromChain,\n fromTokenAddress: fromToken,\n toChainId: toChain,\n toTokenAddress: toToken,\n fromAmount: amount.toString(),\n userAddress: walletAddress,\n uniqueRoutesPerBridge: 'true',\n sort,\n singleTxOnly: 'true',\n }).toString()\n const quote = await sendGetRequest(API_URL, `bridge/quote/?${params}`)\n if (!quote.success || quote.result.routes.length === 0) {\n throw new ResourceNotFoundError(\n ErrorCode.BridgeRouteNotFound,\n 'Unable to find a route for these assets between these chains',\n { walletAddress, fromChain, toChain, fromToken, toToken, amount, sort },\n 'Try another route with a different asset pair',\n 'https://docs.fun.xyz',\n )\n }\n const route = quote.result.routes[0]\n return route\n}\n\nexport async function getSocketBridgeTransaction(route: any): Promise<any> {\n return await sendPostRequest(API_URL, 'bridge/build-tx/', { route })\n}\n\nexport async function getSocketBridgeAllowance(\n chainId: string,\n sender: Address,\n allowanceTarget: string,\n token: string,\n): Promise<any> {\n const params = new URLSearchParams({\n chainId,\n owner: sender,\n allowanceTarget,\n tokenAddress: token,\n }).toString()\n const json = await sendGetRequest(\n API_URL,\n `bridge/approval/check-allowance/?${params}`,\n )\n if (!json.result.value) {\n throw new ResourceNotFoundError(\n ErrorCode.BridgeAllowanceDataNotFound,\n 'Unable to get allowance data',\n { chainId, sender, allowanceTarget, token },\n 'Make sure the chainId, sender, allowanceTarget, and token are correct',\n 'https://docs.fun.xyz',\n )\n }\n return json\n}\n\nexport async function getSocketBridgeApproveTransaction(\n chainId: string,\n sender: Address,\n allowanceTarget: string,\n token: string,\n amount: bigint,\n): Promise<any> {\n const params = new URLSearchParams({\n chainId,\n owner: sender,\n allowanceTarget,\n tokenAddress: token,\n amount: amount.toString(),\n }).toString()\n const json = await sendGetRequest(\n API_URL,\n `bridge/approval/build-tx/?${params}`,\n )\n if (!json.result) {\n throw new ResourceNotFoundError(\n ErrorCode.BridgeApproveTxDataNotFound,\n 'Unable to build the approve transaction data',\n { chainId, sender, allowanceTarget, token, amount },\n 'Make sure the token and allowance are valid values',\n 'https://docs.fun.xyz',\n )\n }\n return json\n}\n", "import { Address } from 'viem'\n\nimport {\n getSocketBridgeAllowance,\n getSocketBridgeApproveTransaction,\n getSocketBridgeQuote,\n getSocketBridgeTransaction,\n} from '../apis/BridgeApis'\nimport {\n APPROVE_AND_EXEC_CONTRACT_INTERFACE,\n TransactionParams,\n} from '../common'\nimport { Chain, Token } from '../data'\nimport { ErrorCode, InvalidParameterError } from '../errors'\nimport { BridgeParams, SocketSort } from './types'\n\nexport const bridgeTransactionParams = async (\n params: BridgeParams,\n walletAddress: Address,\n chain: Chain,\n): Promise<TransactionParams> => {\n const { recipient, fromToken, toToken, sort } = params\n const fromTokenObj = new Token(fromToken, chain)\n const toTokenObj = new Token(toToken, chain)\n const amount = await fromTokenObj.getDecimalAmount(params.amount)\n if (!recipient) {\n throw new InvalidParameterError(\n ErrorCode.InvalidParameter,\n 'Recipient Parameter was undefined',\n { params },\n 'Please provide a recipient',\n 'https://docs.fun.xyz',\n )\n }\n const fromChain = await Chain.getChain({ chainIdentifier: params.fromChain })\n const toChain = await Chain.getChain({ chainIdentifier: params.toChain })\n const fromChainId = await fromChain.getChainId()\n const approveAndExecAddress = await fromChain.getAddress(\n 'approveAndExecAddress',\n )\n const route = await getSocketBridgeQuote(\n recipient,\n walletAddress,\n fromChainId,\n await toChain.getChainId(),\n await fromTokenObj.getAddress(),\n await toTokenObj.getAddress(),\n amount,\n sort ?? SocketSort.output,\n )\n const socketTx = await getSocketBridgeTransaction(route)\n if (socketTx.result.approvalData !== null) {\n const { allowanceTarget, minimumApprovalAmount } =\n socketTx.result.approvalData\n const allowanceStatusCheck = await getSocketBridgeAllowance(\n fromChainId,\n walletAddress,\n allowanceTarget,\n await fromTokenObj.getAddress(),\n )\n const allowanceValue = allowanceStatusCheck.result.value\n if (minimumApprovalAmount > allowanceValue) {\n const approveTxData = await getSocketBridgeApproveTransaction(\n fromChainId,\n walletAddress,\n allowanceTarget,\n await fromTokenObj.getAddress(),\n amount,\n )\n const approveData = approveTxData.result.data\n return APPROVE_AND_EXEC_CONTRACT_INTERFACE.encodeTransactionParams(\n approveAndExecAddress,\n 'approveAndExecute',\n [\n socketTx.result.txTarget,\n socketTx.result.value,\n socketTx.result.txData,\n await fromTokenObj.getAddress(),\n approveData,\n ],\n )\n }\n }\n return {\n to: socketTx.result.txTarget,\n value: socketTx.result.value,\n data: socketTx.result.txData,\n }\n}\n", "import { FeeAmount } from '@uniswap/v3-sdk'\nimport { encodeAbiParameters } from 'viem'\n\nimport {\n APPROVE_AND_EXEC_CONTRACT_INTERFACE,\n ERC20_CONTRACT_INTERFACE,\n TransactionParams,\n UNISWAP_V3_LIMIT_ORDER_CONTRACT_INTERFACE,\n} from '../common'\nimport { Chain, Token } from '../data'\nimport { LimitOrderParam } from './types'\n\nconst fees = {\n lowest: FeeAmount.LOWEST,\n low: FeeAmount.LOW,\n medium: FeeAmount.MEDIUM,\n high: FeeAmount.HIGH,\n}\n\nexport const limitSwapOrderTransactionParams = async (\n params: LimitOrderParam,\n chain: Chain,\n): Promise<TransactionParams> => {\n const { tokenIn, tokenOut, tokenInAmount, tokenOutAmount, poolFee } = params\n const tokenInAddress = await new Token(tokenIn, chain).getAddress()\n const tokenOutAddress = await new Token(tokenOut, chain).getAddress()\n const amountIn = await new Token(tokenIn, chain).getDecimalAmount(\n tokenInAmount,\n )\n const amountOut = await new Token(tokenOut, chain).getDecimalAmount(\n tokenOutAmount,\n )\n const uniswapv3LimitOrderAddress = await chain.getAddress(\n 'uniswapv3LimitOrder',\n )\n const approveAndExecAddress = await chain.getAddress('approveAndExecAddress')\n const _poolFee = poolFee ? fees[poolFee] : FeeAmount.MEDIUM\n const data = encodeAbiParameters(\n [\n {\n type: 'tuple',\n components: [\n { type: 'uint24' },\n { type: 'address' },\n { type: 'address' },\n { type: 'uint256' },\n { type: 'uint256' },\n ],\n },\n ],\n [[_poolFee, tokenInAddress, tokenOutAddress, amountIn, amountOut]],\n )\n\n const UniswapV3LimitOrderExecuteData =\n UNISWAP_V3_LIMIT_ORDER_CONTRACT_INTERFACE.encodeTransactionParams(\n uniswapv3LimitOrderAddress,\n 'execute',\n [data],\n ).data\n const approveData = ERC20_CONTRACT_INTERFACE.encodeTransactionParams(\n tokenInAddress,\n 'approve',\n [uniswapv3LimitOrderAddress, amountIn],\n ).data\n const approveAndExecData =\n APPROVE_AND_EXEC_CONTRACT_INTERFACE.encodeTransactionParams(\n approveAndExecAddress,\n 'approveAndExecute',\n [\n uniswapv3LimitOrderAddress,\n 0,\n UniswapV3LimitOrderExecuteData,\n tokenInAddress,\n approveData,\n ],\n )\n return approveAndExecData\n}\n", "import { Address, Hex } from 'viem'\n\nimport { API_URL } from '../common/constants'\nimport { sendGetRequest, sendPostRequest } from '../utils/ApiUtils'\n\nexport async function initializeWalletAccess(\n walletAddr: Address,\n creatorAddr: Address,\n): Promise<void> {\n await sendPostRequest(API_URL, 'access/wallet', { walletAddr, creatorAddr })\n}\n\nexport async function checkWalletAccessInitialization(\n walletAddr: Address,\n): Promise<boolean> {\n return (await sendGetRequest(API_URL, `access/wallet/${walletAddr}`))\n .initialized\n}\n\nexport async function addAccessToWallet(\n walletAddr: Address,\n nonce: number,\n signature: Hex,\n): Promise<void> {\n await sendPostRequest(API_URL, `access/wallet/${walletAddr}`, {\n nonce,\n signature,\n })\n}\n\nexport async function addAccessToUser(\n authId: string,\n nonce: number,\n signature: Hex,\n): Promise<void> {\n await sendPostRequest(API_URL, `access/user/${authId}`, { nonce, signature })\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,YAAiB,OAAAA,YAAW;;;ACArC;AAAA,EAEE,sBAAAC;AAAA,EACA,UAAAC;AAAA,EAEA,QAAAC;AAAA,EACA,SAAAC;AAAA,EAEA,aAAAC;AAAA,EACA,OAAAC;AAAA,EAEA,WAAAC;AAAA,OAGK;AAGP,SAAS,2BAA2B;AAGpC,YAAY,gBAAgB;;;ACpB5B,SAAuB,yBAAAC,8BAA6B;;;ACApD,OAAO,uBAAuB,yFAAyF,OAAO,EAAE,MAAM,OAAO;AAC7I,SAAS,cAAc;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACbP;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ,CAAC;AAAA,MACpE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,QAC/D,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,SAAS,MAAQ,eAAe,MAAQ,QAAQ;AAAA,QAClE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,SAAS,MAAQ,eAAe,MAAQ,QAAQ;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ,CAAC;AAAA,MACpE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ,CAAC;AAAA,MACnE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,SAAS,MAAQ,SAAS,MAAQ,QAAQ;AAAA,MAC9D;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;;;ACzGA;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,aAAa,MAAQ,UAAU;AAAA,QACpE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ,CAAC;AAAA,MACpE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ,CAAC;AAAA,MACnE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,aAAa,MAAQ,UAAU;AAAA,QACpE,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACjE,EAAE,cAAgB,SAAS,MAAQ,kBAAkB,MAAQ,QAAQ;AAAA,MACvE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACjE,EAAE,cAAgB,SAAS,MAAQ,kBAAkB,MAAQ,QAAQ;AAAA,MACvE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,SAAS,MAAQ,SAAS,MAAQ,QAAQ;AAAA,MAC9D;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,kBAAkB,MAAQ,IAAI,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,kBAAkB,MAAQ,IAAI,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,EAClB,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AACF;;;AC5IA;AAAA,EACE,KAAO;AAAA,IACL;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU,CAAC;AAAA,MACX,SAAW,CAAC,EAAE,MAAQ,IAAI,MAAQ,WAAW,cAAgB,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,QACjE,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,MACjE;AAAA,MACA,SAAW,CAAC,EAAE,MAAQ,IAAI,MAAQ,SAAS,cAAgB,QAAQ,CAAC;AAAA,MACpE,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU,CAAC;AAAA,MACX,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU,CAAC;AAAA,MACX,SAAW;AAAA,QACT;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU,CAAC;AAAA,MACX,SAAW,CAAC,EAAE,MAAQ,IAAI,MAAQ,WAAW,cAAgB,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU,CAAC;AAAA,MACX,SAAW;AAAA,QACT;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU,CAAC;AAAA,MACX,SAAW,CAAC,EAAE,MAAQ,IAAI,MAAQ,WAAW,cAAgB,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,QACA,EAAE,MAAQ,WAAW,MAAQ,SAAS,cAAgB,QAAQ;AAAA,QAC9D;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU,CAAC;AAAA,MACX,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,QACA,EAAE,MAAQ,aAAa,MAAQ,QAAQ,cAAgB,OAAO;AAAA,MAChE;AAAA,MACA,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,YAAY,MAAQ,WAAW,cAAgB,UAAU;AAAA,MACrE;AAAA,MACA,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU,CAAC;AAAA,MACX,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,YAAc;AAAA,YACZ,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,YACjE,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,YAC/D,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,YAC/D;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA,EAAE,MAAQ,aAAa,MAAQ,SAAS,cAAgB,QAAQ;AAAA,UAClE;AAAA,QACF;AAAA,QACA,EAAE,MAAQ,cAAc,MAAQ,WAAW,cAAgB,UAAU;AAAA,QACrE,EAAE,MAAQ,WAAW,MAAQ,WAAW,cAAgB,UAAU;AAAA,MACpE;AAAA,MACA,SAAW;AAAA,QACT,EAAE,MAAQ,WAAW,MAAQ,SAAS,cAAgB,QAAQ;AAAA,QAC9D;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,QACA,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,MACnE;AAAA,MACA,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,SAAW;AAAA,UACX,cAAgB;AAAA,QAClB;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,SAAW;AAAA,UACX,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA,WAAa;AAAA,IACf;AAAA,IACA,EAAE,MAAQ,SAAS,MAAQ,YAAY,QAAU,CAAC,EAAE;AAAA,IACpD;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,YAAY,MAAQ,WAAW,cAAgB,UAAU;AAAA,MACrE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,MACnE;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV,QAAU;AAAA,IACV,WAAa;AAAA,IACb,gBAAkB,CAAC;AAAA,EACrB;AAAA,EACA,kBAAoB;AAAA,IAClB,QAAU;AAAA,IACV,WAAa;AAAA,IACb,gBAAkB,CAAC;AAAA,IACnB,qBAAuB;AAAA,MACrB,OAAO;AAAA,QACL,EAAE,OAAS,KAAK,QAAU,GAAG;AAAA,QAC7B,EAAE,OAAS,KAAK,QAAU,GAAG;AAAA,QAC7B,EAAE,OAAS,KAAK,QAAU,GAAG;AAAA,QAC7B,EAAE,OAAS,MAAM,QAAU,GAAG;AAAA,QAC9B,EAAE,OAAS,MAAM,QAAU,GAAG;AAAA,QAC9B,EAAE,OAAS,MAAM,QAAU,GAAG;AAAA,QAC9B,EAAE,OAAS,MAAM,QAAU,GAAG;AAAA,QAC9B,EAAE,OAAS,MAAM,QAAU,GAAG;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EACA,mBAAqB;AAAA,IACnB,aAAa;AAAA,IACb,kCAAkC;AAAA,IAClC,oBAAoB;AAAA,IACpB,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,+BAA+B;AAAA,IAC/B,uBAAuB;AAAA,IACvB,gCAAgC;AAAA,IAChC,8BAA8B;AAAA,IAC9B,iBAAiB;AAAA,IACjB,8HAA8H;AAAA,IAC9H,0BAA0B;AAAA,IAC1B,+BAA+B;AAAA,EACjC;AAAA,EACA,aAAe;AAAA,EACf,UAAY;AAAA,IACV,UAAY,EAAE,SAAW,yBAAyB;AAAA,IAClD,UAAY;AAAA,IACZ,QAAU;AAAA,MACR,KAAO;AAAA,QACL;AAAA,UACE,QAAU;AAAA,YACR;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,iBAAmB;AAAA,UACnB,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,QAAU,CAAC,GAAG,MAAQ,SAAS,MAAQ,WAAW;AAAA,QACpD;AAAA,UACE,QAAU;AAAA,YACR,EAAE,cAAgB,WAAW,MAAQ,YAAY,MAAQ,UAAU;AAAA,UACrE;AAAA,UACA,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,QAAU;AAAA,YACR,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,UACnE;AAAA,UACA,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,QAAU;AAAA,YACR;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,SAAW;AAAA,YACb;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,SAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,WAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,QAAU,CAAC;AAAA,UACX,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,SAAW;AAAA,YACT,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,UAC7D;AAAA,QACF;AAAA,QACA;AAAA,UACE,QAAU;AAAA,YACR,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,YACjE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,UACjE;AAAA,UACA,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,SAAW,CAAC,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ,CAAC;AAAA,QACtE;AAAA,QACA;AAAA,UACE,QAAU;AAAA,YACR;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,QAAU,CAAC;AAAA,UACX,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,QAAU,CAAC;AAAA,UACX,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,SAAW;AAAA,YACT;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,QAAU,CAAC;AAAA,UACX,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,SAAW;AAAA,YACT,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,UAC7D;AAAA,QACF;AAAA,QACA;AAAA,UACE,QAAU,CAAC;AAAA,UACX,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,SAAW;AAAA,YACT;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,QAAU,CAAC;AAAA,UACX,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,SAAW;AAAA,YACT,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,UAC7D;AAAA,QACF;AAAA,QACA;AAAA,UACE,QAAU;AAAA,YACR;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA,EAAE,cAAgB,SAAS,MAAQ,WAAW,MAAQ,QAAQ;AAAA,YAC9D;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,QAAU,CAAC;AAAA,UACX,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,QAAU;AAAA,YACR;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA,EAAE,cAAgB,QAAQ,MAAQ,aAAa,MAAQ,OAAO;AAAA,UAChE;AAAA,UACA,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,QAAU;AAAA,YACR,EAAE,cAAgB,WAAW,MAAQ,YAAY,MAAQ,UAAU;AAAA,UACrE;AAAA,UACA,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,QAAU,CAAC;AAAA,UACX,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,QAAU;AAAA,YACR;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ;AAAA,kBACE,cAAgB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,cAAgB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,cAAgB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,cAAgB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,cAAgB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,cAAgB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,cAAgB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,cAAgB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,cAAgB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,cAAgB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,gBACA;AAAA,kBACE,cAAgB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,UACpE;AAAA,UACA,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,SAAW;AAAA,YACT,EAAE,cAAgB,SAAS,MAAQ,WAAW,MAAQ,QAAQ;AAAA,YAC9D;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,QAAU;AAAA,YACR;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,QAAU;AAAA,YACR;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,UACnE;AAAA,UACA,iBAAmB;AAAA,UACnB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAU;AAAA,QACR,MAAQ;AAAA,QACR,SAAW;AAAA,UACT,oBAAoB;AAAA,YAClB,QAAU;AAAA,cACR,iBAAmB;AAAA,YACrB;AAAA,UACF;AAAA,UACA,WAAW,EAAE,SAAW,4CAA4C;AAAA,UACpE,+BAA+B;AAAA,YAC7B,QAAU;AAAA,cACR,eAAiB;AAAA,cACjB,SAAW;AAAA,cACX,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,uBAAuB;AAAA,YACrB,SAAW;AAAA,UACb;AAAA,UACA,8BAA8B;AAAA,YAC5B,SAAW;AAAA,UACb;AAAA,UACA,8HAA8H;AAAA,YAC5H,QAAU;AAAA,cACR,SAAW;AAAA,cACX,QAAU;AAAA,cACV,YAAc;AAAA,YAChB;AAAA,YACA,SAAW;AAAA,cACT,SAAW;AAAA,cACX,gBAAkB;AAAA,YACpB;AAAA,UACF;AAAA,UACA,0BAA0B;AAAA,YACxB,QAAU;AAAA,cACR,iBAAmB;AAAA,YACrB;AAAA,UACF;AAAA,UACA,+BAA+B;AAAA,YAC7B,QAAU;AAAA,cACR,QAAU;AAAA,cACV,iBAAmB;AAAA,YACrB;AAAA,UACF;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,QACR,SAAW;AAAA,UACT,oBAAoB;AAAA,YAClB,QAAU;AAAA,UACZ;AAAA,UACA,aAAa;AAAA,YACX,QAAU;AAAA,UACZ;AAAA,UACA,gBAAgB;AAAA,YACd,QAAU;AAAA,UACZ;AAAA,UACA,+BAA+B;AAAA,YAC7B,QAAU;AAAA,UACZ;AAAA,UACA,iBAAiB;AAAA,YACf,QAAU;AAAA,UACZ;AAAA,UACA,8HAA8H;AAAA,YAC5H,QAAU;AAAA,UACZ;AAAA,UACA,0BAA0B;AAAA,YACxB,QAAU;AAAA,UACZ;AAAA,UACA,+BAA+B;AAAA,YAC7B,QAAU;AAAA,UACZ;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,UAAY;AAAA,MACV,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,WAAa,EAAE,SAAW,MAAM,MAAQ,IAAI;AAAA,MAC5C,UAAY,EAAE,cAAgB,OAAO;AAAA,MACrC,mBAAqB;AAAA,QACnB,uCAAuC;AAAA,MACzC;AAAA,MACA,WAAa,CAAC;AAAA,IAChB;AAAA,IACA,SAAW;AAAA,MACT,4DAA4D;AAAA,QAC1D,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,sDAAsD;AAAA,QACpD,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,gEAAgE;AAAA,QAC9D,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,gEAAgE;AAAA,QAC9D,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,kEAAkE;AAAA,QAChE,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,+DAA+D;AAAA,QAC7D,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,kEAAkE;AAAA,QAChE,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,kEAAkE;AAAA,QAChE,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,2DAA2D;AAAA,QACzD,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,0DAA0D;AAAA,QACxD,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,oDAAoD;AAAA,QAClD,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,uCAAuC;AAAA,QACrC,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,MACA,sDAAsD;AAAA,QACpD,WAAa;AAAA,QACb,MAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,SAAW;AAAA,EACb;AAAA,EACA,KAAO;AAAA,IACL,cAAgB;AAAA,IAChB,IAAM;AAAA,IACN,iBAAmB;AAAA,MACjB,aAAe,CAAC,KAAK;AAAA,MACrB,eAAiB,CAAC,GAAG;AAAA,MACrB,mBAAqB,CAAC,KAAK;AAAA,MAC3B,kCAAoC,CAAC,KAAK;AAAA,MAC1C,aAAe,CAAC,GAAG;AAAA,MACnB,+BAAiC,CAAC,KAAK;AAAA,MACvC,eAAiB,CAAC,IAAI;AAAA,IACxB;AAAA,IACA,UAAY;AAAA,IACZ,KAAO;AAAA,IACP,OAAS;AAAA,MACP;AAAA,QACE,IAAM;AAAA,QACN,UAAY;AAAA,QACZ,KAAO;AAAA,QACP,OAAS,CAAC;AAAA,QACV,UAAY,CAAC,YAAY,KAAK,OAAO,KAAK;AAAA,MAC5C;AAAA,MACA;AAAA,QACE,IAAM;AAAA,QACN,UAAY;AAAA,QACZ,KAAO;AAAA,QACP,OAAS,CAAC;AAAA,QACV,cAAgB;AAAA,QAChB,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,OAAS;AAAA,QACT,YAAc;AAAA,QACd,eAAiB;AAAA,UACf;AAAA,YACE,SAAW;AAAA,cACT,IAAM;AAAA,cACN,MAAQ;AAAA,cACR,UAAY;AAAA,cACZ,wBAA0B,CAAC;AAAA,cAC3B,uBAAyB;AAAA,cACzB,KAAO;AAAA,cACP,kBAAoB,CAAC;AAAA,YACvB;AAAA,YACA,cAAgB;AAAA,UAClB;AAAA,QACF;AAAA,QACA,WAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,IAAM;AAAA,QACN,UAAY;AAAA,QACZ,KAAO;AAAA,QACP,OAAS,CAAC;AAAA,QACV,cAAgB;AAAA,QAChB,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,OAAS;AAAA,QACT,YAAc;AAAA,QACd,eAAiB;AAAA,UACf;AAAA,YACE,SAAW;AAAA,cACT,IAAM;AAAA,cACN,MAAQ;AAAA,cACR,UAAY;AAAA,cACZ,wBAA0B,CAAC;AAAA,cAC3B,uBAAyB;AAAA,cACzB,KAAO;AAAA,cACP,kBAAoB,CAAC;AAAA,YACvB;AAAA,YACA,cAAgB;AAAA,UAClB;AAAA,QACF;AAAA,QACA,WAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,IAAM;AAAA,QACN,UAAY;AAAA,QACZ,KAAO;AAAA,QACP,OAAS,CAAC;AAAA,QACV,cAAgB;AAAA,QAChB,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,OAAS;AAAA,QACT,YAAc;AAAA,QACd,eAAiB;AAAA,UACf;AAAA,YACE,SAAW;AAAA,cACT,IAAM;AAAA,cACN,MAAQ;AAAA,cACR,UAAY;AAAA,cACZ,wBAA0B,CAAC;AAAA,cAC3B,uBAAyB;AAAA,cACzB,KAAO;AAAA,cACP,kBAAoB,CAAC;AAAA,YACvB;AAAA,YACA,cAAgB;AAAA,UAClB;AAAA,QACF;AAAA,QACA,WAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,IAAM;AAAA,QACN,UAAY;AAAA,QACZ,KAAO;AAAA,QACP,OAAS,CAAC;AAAA,QACV,cAAgB;AAAA,QAChB,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,OAAS;AAAA,QACT,YAAc;AAAA,QACd,eAAiB;AAAA,UACf;AAAA,YACE,SAAW;AAAA,cACT,IAAM;AAAA,cACN,MAAQ;AAAA,cACR,UAAY;AAAA,cACZ,wBAA0B,CAAC;AAAA,cAC3B,uBAAyB;AAAA,cACzB,KAAO;AAAA,cACP,kBAAoB,CAAC;AAAA,YACvB;AAAA,YACA,cAAgB;AAAA,UAClB;AAAA,QACF;AAAA,QACA,WAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,IAAM;AAAA,QACN,UAAY;AAAA,QACZ,KAAO;AAAA,QACP,OAAS,CAAC;AAAA,QACV,cAAgB;AAAA,QAChB,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,OAAS;AAAA,QACT,YAAc;AAAA,QACd,eAAiB;AAAA,UACf;AAAA,YACE,SAAW;AAAA,cACT,IAAM;AAAA,cACN,MAAQ;AAAA,cACR,UAAY;AAAA,cACZ,wBAA0B,CAAC;AAAA,cAC3B,uBAAyB;AAAA,cACzB,KAAO;AAAA,cACP,kBAAoB,CAAC;AAAA,YACvB;AAAA,YACA,cAAgB;AAAA,UAClB;AAAA,QACF;AAAA,QACA,WAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,IAAM;AAAA,QACN,UAAY;AAAA,QACZ,KAAO;AAAA,QACP,OAAS,CAAC;AAAA,QACV,eAAiB;AAAA,QACjB,SAAW;AAAA,UACT;AAAA,YACE,IAAM;AAAA,YACN,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,UAAY;AAAA,YACZ,KAAO;AAAA,UACT;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,UAAY;AAAA,YACZ,KAAO;AAAA,UACT;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,UAAY;AAAA,YACZ,KAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,MAAQ;AAAA,QACR,cAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,IAAM;AAAA,QACN,UAAY;AAAA,QACZ,KAAO;AAAA,QACP,OAAS;AAAA,UACP;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,UAAY;AAAA,YACZ,kBAAoB;AAAA,YACpB,YAAc;AAAA,YACd,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,OAAS;AAAA,YACT,eAAiB;AAAA,YACjB,iBAAmB;AAAA,YACnB,kBAAoB;AAAA,cAClB,gBAAkB;AAAA,cAClB,YAAc;AAAA,YAChB;AAAA,YACA,UAAY;AAAA,cACV,IAAM;AAAA,cACN,MAAQ;AAAA,cACR,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,kBAAoB;AAAA,gBAClB,gBAAkB;AAAA,gBAClB,YAAc;AAAA,cAChB;AAAA,YACF;AAAA,YACA,OAAS;AAAA,cACP,UAAY;AAAA,cACZ,IAAM;AAAA,cACN,YAAc;AAAA,cACd,UAAY;AAAA,cACZ,QAAU;AAAA,cACV,MAAQ;AAAA,cACR,iBAAmB;AAAA,cACnB,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,kBAAoB;AAAA,gBAClB,gBAAkB;AAAA,gBAClB,YAAc;AAAA,cAChB;AAAA,cACA,OAAS;AAAA,YACX;AAAA,YACA,YAAc;AAAA,UAChB;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,UAAY;AAAA,YACZ,YAAc;AAAA,YACd,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,OAAS;AAAA,YACT,eAAiB;AAAA,YACjB,iBAAmB;AAAA,YACnB,kBAAoB;AAAA,cAClB,gBAAkB;AAAA,cAClB,YAAc;AAAA,YAChB;AAAA,YACA,UAAY;AAAA,cACV,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,UAAY;AAAA,gBACV,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,eAAiB,CAAC,WAAW;AAAA,gBAC7B,UAAY;AAAA,gBACZ,uBAAyB;AAAA,gBACzB,KAAO;AAAA,cACT;AAAA,cACA,uBAAyB;AAAA,cACzB,KAAO;AAAA,cACP,kBAAoB;AAAA,gBAClB,gBAAkB;AAAA,gBAClB,YAAc;AAAA,cAChB;AAAA,YACF;AAAA,YACA,YAAc;AAAA,UAChB;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,UAAY;AAAA,YACZ,YAAc;AAAA,YACd,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,OAAS;AAAA,YACT,eAAiB;AAAA,YACjB,iBAAmB;AAAA,YACnB,kBAAoB;AAAA,cAClB,gBAAkB;AAAA,cAClB,YAAc;AAAA,YAChB;AAAA,YACA,UAAY;AAAA,cACV,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,UAAY;AAAA,gBACV,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,eAAiB,CAAC,WAAW;AAAA,gBAC7B,UAAY;AAAA,gBACZ,uBAAyB;AAAA,gBACzB,KAAO;AAAA,cACT;AAAA,cACA,uBAAyB;AAAA,cACzB,KAAO;AAAA,cACP,kBAAoB;AAAA,gBAClB,gBAAkB;AAAA,gBAClB,YAAc;AAAA,cAChB;AAAA,YACF;AAAA,YACA,YAAc;AAAA,UAChB;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,UAAY;AAAA,YACZ,YAAc;AAAA,YACd,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,OAAS;AAAA,YACT,eAAiB;AAAA,YACjB,iBAAmB;AAAA,YACnB,kBAAoB;AAAA,cAClB,gBAAkB;AAAA,cAClB,YAAc;AAAA,YAChB;AAAA,YACA,UAAY;AAAA,cACV,IAAM;AAAA,cACN,SAAW;AAAA,cACX,iBAAmB;AAAA,cACnB,SAAW;AAAA,gBACT,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,UAAY;AAAA,gBACZ,KAAO;AAAA,gBACP,kBAAoB;AAAA,kBAClB,gBAAkB;AAAA,kBAClB,YAAc;AAAA,gBAChB;AAAA,cACF;AAAA,cACA,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,kBAAoB;AAAA,gBAClB,gBAAkB;AAAA,gBAClB,YAAc;AAAA,cAChB;AAAA,cACA,WAAa;AAAA,cACb,mBAAqB;AAAA,cACrB,WAAa;AAAA,gBACX,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,UAAY;AAAA,gBACZ,KAAO;AAAA,gBACP,kBAAoB;AAAA,kBAClB,gBAAkB;AAAA,kBAClB,YAAc;AAAA,gBAChB;AAAA,cACF;AAAA,YACF;AAAA,YACA,YAAc;AAAA,UAChB;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,MAAQ;AAAA,cACN,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,OAAS,CAAC;AAAA,cACV,YAAc;AAAA,gBACZ;AAAA,kBACE,WAAa;AAAA,oBACX,IAAM;AAAA,oBACN,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,iBAAmB;AAAA,oBACnB,UAAY;AAAA,oBACZ,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,KAAO;AAAA,oBACP,eAAiB;AAAA,sBACf,gBAAkB;AAAA,wBAChB,IAAM;AAAA,wBACN,MAAQ;AAAA,wBACR,UAAY;AAAA,wBACZ,wBAA0B,CAAC;AAAA,wBAC3B,uBAAyB;AAAA,wBACzB,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,IAAM;AAAA,sBACN,iBAAmB;AAAA,wBACjB,YAAc;AAAA,0BACZ,IAAM;AAAA,0BACN,MAAQ;AAAA,0BACR,UAAY;AAAA,0BACZ,wBAA0B,CAAC;AAAA,0BAC3B,uBAAyB;AAAA,0BACzB,KAAO;AAAA,0BACP,kBAAoB;AAAA,4BAClB,gBAAkB;AAAA,4BAClB,YAAc;AAAA,0BAChB;AAAA,wBACF;AAAA,wBACA,IAAM;AAAA,wBACN,YAAc;AAAA,wBACd,UAAY;AAAA,wBACZ,QAAU;AAAA,wBACV,iBAAmB;AAAA,wBACnB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,wBACd,UAAY;AAAA,wBACZ,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,QAAU;AAAA,sBACV,iBAAmB;AAAA,sBACnB,UAAY;AAAA,sBACZ,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,kBACP,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,YAAc;AAAA,sBACZ;AAAA,wBACE,WAAa;AAAA,0BACX,WAAa;AAAA,4BACX;AAAA,8BACE,YAAc;AAAA,gCACZ,IAAM;AAAA,gCACN,MAAQ;AAAA,gCACR,UAAY;AAAA,gCACZ,wBAA0B,CAAC;AAAA,gCAC3B,uBAAyB;AAAA,gCACzB,KAAO;AAAA,gCACP,kBAAoB;AAAA,kCAClB,gBAAkB;AAAA,kCAClB,YAAc;AAAA,gCAChB;AAAA,8BACF;AAAA,8BACA,IAAM;AAAA,8BACN,YAAc;AAAA,8BACd,UAAY;AAAA,8BACZ,QAAU;AAAA,8BACV,iBAAmB;AAAA,8BACnB,gBAAkB;AAAA,8BAClB,YAAc;AAAA,8BACd,UAAY;AAAA,8BACZ,KAAO;AAAA,8BACP,kBAAoB;AAAA,gCAClB,gBAAkB;AAAA,gCAClB,YAAc;AAAA,8BAChB;AAAA,4BACF;AAAA,0BACF;AAAA,0BACA,YAAc;AAAA,4BACZ,eAAiB;AAAA,8BACf;AAAA,gCACE,gBAAkB;AAAA,gCAClB,YAAc;AAAA,8BAChB;AAAA,4BACF;AAAA,4BACA,IAAM;AAAA,4BACN,MAAQ;AAAA,4BACR,UAAY;AAAA,4BACZ,wBAA0B,CAAC;AAAA,4BAC3B,uBAAyB;AAAA,4BACzB,KAAO;AAAA,4BACP,kBAAoB;AAAA,8BAClB,gBAAkB;AAAA,8BAClB,YAAc;AAAA,4BAChB;AAAA,0BACF;AAAA,0BACA,IAAM;AAAA,0BACN,YAAc;AAAA,0BACd,UAAY;AAAA,0BACZ,QAAU;AAAA,0BACV,MAAQ;AAAA,0BACR,iBAAmB;AAAA,0BACnB,eAAiB,CAAC;AAAA,0BAClB,OAAS,CAAC;AAAA,0BACV,UAAY;AAAA,0BACZ,KAAO;AAAA,0BACP,SAAW;AAAA,0BACX,kBAAoB;AAAA,4BAClB,gBAAkB;AAAA,4BAClB,YAAc;AAAA,0BAChB;AAAA,wBACF;AAAA,wBACA,IAAM;AAAA,wBACN,UAAY;AAAA,wBACZ,KAAO;AAAA,sBACT;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,YAAc;AAAA,oBACZ,IAAM;AAAA,oBACN,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,iBAAmB;AAAA,oBACnB,cAAgB;AAAA,sBACd,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,UAAY;AAAA,sBACZ,wBAA0B,CAAC;AAAA,sBAC3B,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,UAAY;AAAA,oBACZ,UAAY;AAAA,oBACZ,eAAiB;AAAA,sBACf,YAAc;AAAA,wBACZ,IAAM;AAAA,wBACN,MAAQ;AAAA,wBACR,UAAY;AAAA,wBACZ,wBAA0B,CAAC;AAAA,wBAC3B,uBAAyB;AAAA,wBACzB,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,IAAM;AAAA,sBACN,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,QAAU;AAAA,sBACV,iBAAmB;AAAA,sBACnB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,YAAc;AAAA,oBACZ,IAAM;AAAA,oBACN,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,iBAAmB;AAAA,oBACnB,cAAgB;AAAA,sBACd,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,UAAY;AAAA,sBACZ,wBAA0B,CAAC;AAAA,sBAC3B,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,UAAY;AAAA,oBACZ,UAAY;AAAA,oBACZ,eAAiB;AAAA,sBACf,YAAc;AAAA,wBACZ,IAAM;AAAA,wBACN,MAAQ;AAAA,wBACR,UAAY;AAAA,wBACZ,wBAA0B,CAAC;AAAA,wBAC3B,uBAAyB;AAAA,wBACzB,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,IAAM;AAAA,sBACN,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,QAAU;AAAA,sBACV,iBAAmB;AAAA,sBACnB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,YACA,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,YAAc;AAAA,cACZ,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc,CAAC;AAAA,cACf,KAAO;AAAA,YACT;AAAA,YACA,SAAW;AAAA,YACX,YAAc;AAAA,UAChB;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,MAAQ;AAAA,cACN,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,OAAS,CAAC;AAAA,cACV,YAAc;AAAA,gBACZ;AAAA,kBACE,WAAa;AAAA,oBACX,YAAc;AAAA,sBACZ,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,oBACA,IAAM;AAAA,oBACN,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,iBAAmB;AAAA,oBACnB,gBAAkB;AAAA,sBAChB,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,UAAY;AAAA,sBACZ,wBAA0B,CAAC;AAAA,sBAC3B,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,UAAY;AAAA,oBACZ,UAAY;AAAA,oBACZ,iBAAmB;AAAA,sBACjB,YAAc;AAAA,wBACZ,IAAM;AAAA,wBACN,MAAQ;AAAA,wBACR,UAAY;AAAA,wBACZ,wBAA0B,CAAC;AAAA,wBAC3B,uBAAyB;AAAA,wBACzB,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,IAAM;AAAA,sBACN,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,QAAU;AAAA,sBACV,iBAAmB;AAAA,sBACnB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,kBACP,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,YAAc;AAAA,sBACZ;AAAA,wBACE,WAAa;AAAA,0BACX,WAAa,CAAC;AAAA,0BACd,YAAc;AAAA,4BACZ,eAAiB,CAAC;AAAA,4BAClB,IAAM;AAAA,4BACN,MAAQ;AAAA,4BACR,UAAY;AAAA,4BACZ,wBAA0B,CAAC;AAAA,4BAC3B,uBAAyB;AAAA,4BACzB,KAAO;AAAA,4BACP,kBAAoB;AAAA,8BAClB,gBAAkB;AAAA,8BAClB,YAAc;AAAA,4BAChB;AAAA,0BACF;AAAA,0BACA,IAAM;AAAA,0BACN,YAAc;AAAA,0BACd,UAAY;AAAA,0BACZ,QAAU;AAAA,0BACV,MAAQ;AAAA,0BACR,iBAAmB;AAAA,0BACnB,eAAiB,CAAC;AAAA,0BAClB,OAAS,CAAC;AAAA,0BACV,UAAY;AAAA,0BACZ,KAAO;AAAA,0BACP,SAAW;AAAA,0BACX,kBAAoB;AAAA,4BAClB,gBAAkB;AAAA,4BAClB,YAAc;AAAA,0BAChB;AAAA,wBACF;AAAA,wBACA,IAAM;AAAA,wBACN,UAAY;AAAA,wBACZ,KAAO;AAAA,sBACT;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,YACA,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,YAAc;AAAA,cACZ,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc,CAAC;AAAA,cACf,KAAO;AAAA,YACT;AAAA,YACA,SAAW;AAAA,YACX,YAAc;AAAA,UAChB;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,MAAQ;AAAA,cACN,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,OAAS,CAAC;AAAA,cACV,YAAc;AAAA,gBACZ;AAAA,kBACE,YAAc;AAAA,oBACZ,IAAM;AAAA,oBACN,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,iBAAmB;AAAA,oBACnB,cAAgB;AAAA,sBACd,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,UAAY;AAAA,sBACZ,wBAA0B,CAAC;AAAA,sBAC3B,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,UAAY;AAAA,oBACZ,UAAY;AAAA,oBACZ,eAAiB;AAAA,sBACf,YAAc;AAAA,wBACZ,IAAM;AAAA,wBACN,MAAQ;AAAA,wBACR,UAAY;AAAA,wBACZ,wBAA0B,CAAC;AAAA,wBAC3B,uBAAyB;AAAA,wBACzB,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,IAAM;AAAA,sBACN,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,QAAU;AAAA,sBACV,iBAAmB;AAAA,sBACnB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,YACA,aAAe;AAAA,YACf,MAAQ;AAAA,YACR,WAAa;AAAA,cACX;AAAA,gBACE,WAAa;AAAA,kBACX;AAAA,oBACE,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,wBAA0B,CAAC;AAAA,oBAC3B,uBAAyB;AAAA,oBACzB,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,cAAgB;AAAA,kBACd,IAAM;AAAA,kBACN,MAAQ;AAAA,kBACR,eAAiB,CAAC,YAAY;AAAA,kBAC9B,UAAY;AAAA,kBACZ,uBAAyB;AAAA,kBACzB,KAAO;AAAA,gBACT;AAAA,gBACA,UAAY;AAAA,gBACZ,KAAO;AAAA,cACT;AAAA,YACF;AAAA,YACA,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,YAAc;AAAA,cACZ,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc;AAAA,gBACZ;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,UAAY;AAAA,sBACV,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,eAAiB,CAAC,YAAY;AAAA,sBAC9B,UAAY;AAAA,sBACZ,uBAAyB;AAAA,sBACzB,KAAO;AAAA,oBACT;AAAA,oBACA,uBAAyB;AAAA,oBACzB,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,cACF;AAAA,cACA,KAAO;AAAA,YACT;AAAA,YACA,kBAAoB;AAAA,cAClB,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc,CAAC;AAAA,cACf,KAAO;AAAA,YACT;AAAA,YACA,OAAS;AAAA,YACT,iBAAmB;AAAA,YACnB,SAAW;AAAA,YACX,YAAc;AAAA,UAChB;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,MAAQ;AAAA,cACN,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,OAAS,CAAC;AAAA,cACV,YAAc;AAAA,gBACZ;AAAA,kBACE,aAAe,CAAC,KAAK;AAAA,kBACrB,cAAgB;AAAA,oBACd;AAAA,sBACE,UAAY;AAAA,sBACZ,IAAM;AAAA,sBACN,YAAc;AAAA,sBACd,MAAQ;AAAA,sBACR,cAAgB;AAAA,sBAChB,UAAY;AAAA,sBACZ,OAAS;AAAA,sBACT,KAAO;AAAA,sBACP,eAAiB;AAAA,sBACjB,iBAAmB;AAAA,sBACnB,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,sBACA,UAAY;AAAA,wBACV,IAAM;AAAA,wBACN,MAAQ;AAAA,wBACR,UAAY;AAAA,wBACZ,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,IAAM;AAAA,kBACN,cAAgB;AAAA,oBACd,YAAc;AAAA,sBACZ,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,UAAY;AAAA,sBACZ,wBAA0B,CAAC;AAAA,sBAC3B,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,IAAM;AAAA,oBACN,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,iBAAmB;AAAA,oBACnB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,UAAY;AAAA,kBACZ,KAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,oBACN,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,YAAc;AAAA,sBACZ;AAAA,wBACE,YAAc;AAAA,0BACZ,IAAM;AAAA,0BACN,YAAc;AAAA,0BACd,UAAY;AAAA,0BACZ,QAAU;AAAA,0BACV,iBAAmB;AAAA,0BACnB,cAAgB;AAAA,4BACd,gBAAkB;AAAA,8BAChB,IAAM;AAAA,8BACN,MAAQ;AAAA,8BACR,UAAY;AAAA,8BACZ,wBAA0B,CAAC;AAAA,8BAC3B,uBAAyB;AAAA,8BACzB,KAAO;AAAA,8BACP,kBAAoB;AAAA,gCAClB,gBAAkB;AAAA,gCAClB,YAAc;AAAA,8BAChB;AAAA,4BACF;AAAA,4BACA,IAAM;AAAA,4BACN,iBAAmB;AAAA,8BACjB,gBAAkB;AAAA,gCAChB,IAAM;AAAA,gCACN,MAAQ;AAAA,gCACR,UAAY;AAAA,gCACZ,wBAA0B,CAAC;AAAA,gCAC3B,uBAAyB;AAAA,gCACzB,KAAO;AAAA,gCACP,kBAAoB;AAAA,kCAClB,gBAAkB;AAAA,kCAClB,YAAc;AAAA,gCAChB;AAAA,8BACF;AAAA,8BACA,IAAM;AAAA,8BACN,iBAAmB;AAAA,gCACjB,IAAM;AAAA,gCACN,MAAQ;AAAA,gCACR,UAAY;AAAA,gCACZ,wBAA0B,CAAC;AAAA,gCAC3B,uBAAyB;AAAA,gCACzB,KAAO;AAAA,gCACP,kBAAoB;AAAA,kCAClB,gBAAkB;AAAA,kCAClB,YAAc;AAAA,gCAChB;AAAA,8BACF;AAAA,8BACA,YAAc;AAAA,8BACd,UAAY;AAAA,8BACZ,QAAU;AAAA,8BACV,iBAAmB;AAAA,8BACnB,UAAY;AAAA,8BACZ,KAAO;AAAA,8BACP,kBAAoB;AAAA,gCAClB,gBAAkB;AAAA,gCAClB,YAAc;AAAA,8BAChB;AAAA,4BACF;AAAA,4BACA,YAAc;AAAA,4BACd,UAAY;AAAA,4BACZ,QAAU;AAAA,4BACV,iBAAmB;AAAA,4BACnB,UAAY;AAAA,4BACZ,KAAO;AAAA,4BACP,kBAAoB;AAAA,8BAClB,gBAAkB;AAAA,8BAClB,YAAc;AAAA,4BAChB;AAAA,0BACF;AAAA,0BACA,UAAY;AAAA,0BACZ,UAAY;AAAA,0BACZ,eAAiB;AAAA,4BACf,IAAM;AAAA,4BACN,MAAQ;AAAA,4BACR,UAAY;AAAA,4BACZ,wBAA0B,CAAC;AAAA,4BAC3B,uBAAyB;AAAA,4BACzB,KAAO;AAAA,4BACP,kBAAoB;AAAA,8BAClB,gBAAkB;AAAA,8BAClB,YAAc;AAAA,4BAChB;AAAA,0BACF;AAAA,0BACA,KAAO;AAAA,0BACP,kBAAoB;AAAA,4BAClB,gBAAkB;AAAA,4BAClB,YAAc;AAAA,0BAChB;AAAA,wBACF;AAAA,wBACA,IAAM;AAAA,wBACN,UAAY;AAAA,wBACZ,KAAO;AAAA,sBACT;AAAA,oBACF;AAAA,kBACF;AAAA,kBACA,WAAa;AAAA,oBACX,YAAc;AAAA,sBACZ,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,oBACA,IAAM;AAAA,oBACN,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,iBAAmB;AAAA,oBACnB,gBAAkB;AAAA,sBAChB,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,UAAY;AAAA,sBACZ,wBAA0B,CAAC;AAAA,sBAC3B,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,UAAY;AAAA,oBACZ,UAAY;AAAA,oBACZ,iBAAmB;AAAA,sBACjB,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,UAAY;AAAA,sBACZ,wBAA0B,CAAC;AAAA,sBAC3B,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,IAAM;AAAA,kBACN,0BAA4B;AAAA,oBAC1B,aAAe,CAAC,KAAK;AAAA,oBACrB,cAAgB;AAAA,sBACd;AAAA,wBACE,UAAY;AAAA,wBACZ,IAAM;AAAA,wBACN,YAAc;AAAA,wBACd,MAAQ;AAAA,wBACR,cAAgB;AAAA,wBAChB,UAAY;AAAA,wBACZ,OAAS;AAAA,wBACT,KAAO;AAAA,wBACP,eAAiB;AAAA,wBACjB,iBAAmB;AAAA,wBACnB,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,wBACA,UAAY;AAAA,0BACV,IAAM;AAAA,0BACN,MAAQ;AAAA,0BACR,UAAY;AAAA,0BACZ,KAAO;AAAA,0BACP,kBAAoB;AAAA,4BAClB,gBAAkB;AAAA,4BAClB,YAAc;AAAA,0BAChB;AAAA,wBACF;AAAA,wBACA,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,KAAO;AAAA,kBACT;AAAA,kBACA,gBAAkB;AAAA,oBAChB,YAAc;AAAA,sBACZ,IAAM;AAAA,sBACN,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,QAAU;AAAA,sBACV,iBAAmB;AAAA,sBACnB,UAAY;AAAA,sBACZ,UAAY;AAAA,sBACZ,QAAU;AAAA,sBACV,KAAO;AAAA,sBACP,eAAiB;AAAA,wBACf,IAAM;AAAA,wBACN,MAAQ;AAAA,wBACR,UAAY;AAAA,wBACZ,wBAA0B,CAAC;AAAA,wBAC3B,uBAAyB;AAAA,wBACzB,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,KAAO;AAAA,kBACT;AAAA,kBACA,UAAY;AAAA,kBACZ,KAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,YACA,kBAAoB;AAAA,YACpB,aAAe;AAAA,YACf,MAAQ;AAAA,YACR,WAAa;AAAA,cACX;AAAA,gBACE,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,cAAgB;AAAA,kBACd,IAAM;AAAA,kBACN,MAAQ;AAAA,kBACR,eAAiB,CAAC,WAAW;AAAA,kBAC7B,UAAY;AAAA,kBACZ,uBAAyB;AAAA,kBACzB,KAAO;AAAA,gBACT;AAAA,gBACA,UAAY;AAAA,gBACZ,KAAO;AAAA,cACT;AAAA,YACF;AAAA,YACA,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,YAAc;AAAA,cACZ,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc;AAAA,gBACZ;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,UAAY;AAAA,sBACV,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,UAAY;AAAA,sBACZ,KAAO;AAAA,sBACP,iBAAmB;AAAA,sBACnB,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,gBACA;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,cACF;AAAA,cACA,KAAO;AAAA,YACT;AAAA,YACA,kBAAoB;AAAA,cAClB,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc,CAAC;AAAA,cACf,KAAO;AAAA,YACT;AAAA,YACA,OAAS;AAAA,YACT,iBAAmB;AAAA,YACnB,SAAW;AAAA,YACX,YAAc;AAAA,UAChB;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,MAAQ;AAAA,cACN,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,OAAS,CAAC;AAAA,cACV,YAAc;AAAA,gBACZ;AAAA,kBACE,aAAe,CAAC,OAAO,KAAK;AAAA,kBAC5B,cAAgB;AAAA,oBACd;AAAA,sBACE,UAAY;AAAA,sBACZ,IAAM;AAAA,sBACN,YAAc;AAAA,sBACd,MAAQ;AAAA,sBACR,cAAgB;AAAA,sBAChB,UAAY;AAAA,sBACZ,OAAS;AAAA,sBACT,KAAO;AAAA,sBACP,eAAiB;AAAA,sBACjB,iBAAmB;AAAA,sBACnB,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,sBACA,UAAY;AAAA,wBACV,IAAM;AAAA,wBACN,MAAQ;AAAA,wBACR,UAAY;AAAA,wBACZ,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,YAAc;AAAA,oBAChB;AAAA,oBACA;AAAA,sBACE,UAAY;AAAA,sBACZ,IAAM;AAAA,sBACN,YAAc;AAAA,sBACd,MAAQ;AAAA,sBACR,cAAgB;AAAA,sBAChB,UAAY;AAAA,sBACZ,OAAS;AAAA,sBACT,KAAO;AAAA,sBACP,eAAiB;AAAA,sBACjB,iBAAmB;AAAA,sBACnB,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,sBACA,UAAY;AAAA,wBACV,IAAM;AAAA,wBACN,MAAQ;AAAA,wBACR,UAAY;AAAA,wBACZ,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,IAAM;AAAA,kBACN,cAAgB;AAAA,oBACd,WAAa;AAAA,sBACX;AAAA,wBACE,IAAM;AAAA,wBACN,MAAQ;AAAA,wBACR,UAAY;AAAA,wBACZ,wBAA0B,CAAC;AAAA,wBAC3B,uBAAyB;AAAA,wBACzB,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,oBACF;AAAA,oBACA,YAAc;AAAA,sBACZ,eAAiB;AAAA,wBACf;AAAA,0BACE,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,YAAc;AAAA,wBACZ,eAAiB;AAAA,0BACf;AAAA,4BACE,gBAAkB;AAAA,4BAClB,YAAc;AAAA,0BAChB;AAAA,wBACF;AAAA,wBACA,YAAc;AAAA,0BACZ,WAAa;AAAA,4BACX;AAAA,8BACE,IAAM;AAAA,8BACN,MAAQ;AAAA,8BACR,UAAY;AAAA,8BACZ,wBAA0B,CAAC;AAAA,8BAC3B,uBAAyB;AAAA,8BACzB,KAAO;AAAA,8BACP,kBAAoB;AAAA,gCAClB,gBAAkB;AAAA,gCAClB,YAAc;AAAA,8BAChB;AAAA,4BACF;AAAA,0BACF;AAAA,0BACA,YAAc;AAAA,4BACZ,eAAiB;AAAA,8BACf;AAAA,gCACE,gBAAkB;AAAA,gCAClB,YAAc;AAAA,8BAChB;AAAA,4BACF;AAAA,4BACA,IAAM;AAAA,4BACN,YAAc;AAAA,4BACd,UAAY;AAAA,4BACZ,QAAU;AAAA,4BACV,iBAAmB;AAAA,4BACnB,UAAY;AAAA,4BACZ,KAAO;AAAA,4BACP,kBAAoB;AAAA,8BAClB,gBAAkB;AAAA,8BAClB,YAAc;AAAA,4BAChB;AAAA,4BACA,UAAY;AAAA,8BACV,IAAM;AAAA,8BACN,MAAQ;AAAA,8BACR,UAAY;AAAA,8BACZ,KAAO;AAAA,8BACP,iBAAmB;AAAA,8BACnB,kBAAoB,CAAC;AAAA,4BACvB;AAAA,0BACF;AAAA,0BACA,IAAM;AAAA,0BACN,YAAc;AAAA,0BACd,UAAY;AAAA,0BACZ,QAAU;AAAA,0BACV,MAAQ;AAAA,0BACR,iBAAmB;AAAA,0BACnB,eAAiB,CAAC;AAAA,0BAClB,OAAS,CAAC;AAAA,0BACV,UAAY;AAAA,0BACZ,KAAO;AAAA,0BACP,SAAW;AAAA,0BACX,kBAAoB;AAAA,4BAClB,gBAAkB;AAAA,4BAClB,YAAc;AAAA,0BAChB;AAAA,wBACF;AAAA,wBACA,IAAM;AAAA,wBACN,YAAc;AAAA,wBACd,UAAY;AAAA,wBACZ,QAAU;AAAA,wBACV,iBAAmB;AAAA,wBACnB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,wBACd,UAAY;AAAA,wBACZ,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,IAAM;AAAA,sBACN,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,QAAU;AAAA,sBACV,iBAAmB;AAAA,sBACnB,OAAS,CAAC,OAAO;AAAA,sBACjB,UAAY;AAAA,sBACZ,SAAW;AAAA,wBACT;AAAA,0BACE,YAAc;AAAA,4BACZ,IAAM;AAAA,4BACN,MAAQ;AAAA,4BACR,UAAY;AAAA,4BACZ,wBAA0B,CAAC;AAAA,4BAC3B,uBAAyB;AAAA,4BACzB,KAAO;AAAA,4BACP,kBAAoB;AAAA,8BAClB,gBAAkB;AAAA,8BAClB,YAAc;AAAA,4BAChB;AAAA,0BACF;AAAA,0BACA,IAAM;AAAA,0BACN,YAAc;AAAA,0BACd,UAAY;AAAA,0BACZ,QAAU;AAAA,0BACV,iBAAmB;AAAA,0BACnB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,0BACd,UAAY;AAAA,0BACZ,KAAO;AAAA,0BACP,kBAAoB;AAAA,4BAClB,gBAAkB;AAAA,4BAClB,YAAc;AAAA,0BAChB;AAAA,wBACF;AAAA,sBACF;AAAA,sBACA,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,IAAM;AAAA,oBACN,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,MAAQ;AAAA,oBACR,iBAAmB;AAAA,oBACnB,eAAiB,CAAC;AAAA,oBAClB,OAAS,CAAC;AAAA,oBACV,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,SAAW;AAAA,oBACX,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,UAAY;AAAA,kBACZ,KAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,WAAa;AAAA,oBACX,IAAM;AAAA,oBACN,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,iBAAmB;AAAA,oBACnB,UAAY;AAAA,oBACZ,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,KAAO;AAAA,oBACP,eAAiB;AAAA,sBACf,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,UAAY;AAAA,sBACZ,wBAA0B,CAAC;AAAA,sBAC3B,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,kBACP,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,YAAc;AAAA,sBACZ;AAAA,wBACE,KAAO;AAAA,0BACL,UAAY;AAAA,0BACZ,KAAO;AAAA,0BACP,YAAc;AAAA,4BACZ;AAAA,8BACE,YAAc;AAAA,gCACZ,WAAa;AAAA,kCACX;AAAA,oCACE,WAAa;AAAA,sCACX;AAAA,wCACE,MAAQ;AAAA,wCACR,UAAY;AAAA,wCACZ,KAAO;AAAA,sCACT;AAAA,sCACA;AAAA,wCACE,MAAQ;AAAA,wCACR,UAAY;AAAA,wCACZ,KAAO;AAAA,wCACP,MAAQ;AAAA,wCACR,OAAS;AAAA,sCACX;AAAA,oCACF;AAAA,oCACA,cAAgB;AAAA,sCACd,MAAQ;AAAA,sCACR,UAAY;AAAA,sCACZ,KAAO;AAAA,oCACT;AAAA,oCACA,UAAY;AAAA,oCACZ,KAAO;AAAA,kCACT;AAAA,kCACA;AAAA,oCACE,WAAa;AAAA,sCACX;AAAA,wCACE,MAAQ;AAAA,wCACR,UAAY;AAAA,wCACZ,KAAO;AAAA,sCACT;AAAA,oCACF;AAAA,oCACA,cAAgB;AAAA,sCACd,MAAQ;AAAA,sCACR,UAAY;AAAA,sCACZ,KAAO;AAAA,oCACT;AAAA,oCACA,UAAY;AAAA,oCACZ,KAAO;AAAA,kCACT;AAAA,gCACF;AAAA,gCACA,cAAgB;AAAA,kCACd,MAAQ;AAAA,kCACR,UAAY;AAAA,kCACZ,KAAO;AAAA,gCACT;AAAA,gCACA,UAAY;AAAA,gCACZ,KAAO;AAAA,8BACT;AAAA,8BACA,UAAY;AAAA,8BACZ,KAAO;AAAA,4BACT;AAAA,0BACF;AAAA,wBACF;AAAA,wBACA,YAAc;AAAA,wBACd,oBAAsB;AAAA,0BACpB;AAAA,4BACE,aAAe;AAAA,4BACf,UAAY;AAAA,4BACZ,QAAU;AAAA,4BACV,KAAO;AAAA,4BACP,WAAa;AAAA,0BACf;AAAA,0BACA;AAAA,4BACE,aAAe;AAAA,4BACf,UAAY;AAAA,4BACZ,QAAU;AAAA,4BACV,KAAO;AAAA,4BACP,WAAa;AAAA,0BACf;AAAA,wBACF;AAAA,wBACA,IAAM;AAAA,wBACN,UAAY;AAAA,wBACZ,KAAO;AAAA,sBACT;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,YAAc;AAAA,oBACZ,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,wBAA0B,CAAC;AAAA,oBAC3B,uBAAyB;AAAA,oBACzB,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,0BAA4B;AAAA,kBAC5B,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,YACA,kBAAoB;AAAA,YACpB,aAAe;AAAA,YACf,MAAQ;AAAA,YACR,WAAa;AAAA,cACX;AAAA,gBACE,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,cAAgB;AAAA,kBACd,IAAM;AAAA,kBACN,MAAQ;AAAA,kBACR,eAAiB,CAAC,WAAW;AAAA,kBAC7B,UAAY;AAAA,kBACZ,uBAAyB;AAAA,kBACzB,KAAO;AAAA,gBACT;AAAA,gBACA,UAAY;AAAA,gBACZ,KAAO;AAAA,cACT;AAAA,YACF;AAAA,YACA,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,YAAc;AAAA,cACZ,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc;AAAA,gBACZ;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,iBAAmB;AAAA,oBACnB,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,gBACA;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,cACF;AAAA,cACA,KAAO;AAAA,YACT;AAAA,YACA,kBAAoB;AAAA,cAClB,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc;AAAA,gBACZ;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,cACF;AAAA,cACA,KAAO;AAAA,YACT;AAAA,YACA,OAAS;AAAA,YACT,iBAAmB;AAAA,YACnB,SAAW;AAAA,YACX,YAAc;AAAA,UAChB;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,MAAQ;AAAA,cACN,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,OAAS,CAAC;AAAA,cACV,YAAc;AAAA,gBACZ;AAAA,kBACE,YAAc;AAAA,oBACZ,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,wBAA0B,CAAC;AAAA,oBAC3B,uBAAyB;AAAA,oBACzB,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,0BAA4B;AAAA,kBAC5B,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,YACA,eAAiB,CAAC,KAAK;AAAA,YACvB,kBAAoB;AAAA,YACpB,aAAe;AAAA,YACf,MAAQ;AAAA,YACR,WAAa,CAAC;AAAA,YACd,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,YAAc;AAAA,cACZ,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc,CAAC;AAAA,cACf,KAAO;AAAA,YACT;AAAA,YACA,kBAAoB;AAAA,cAClB,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc;AAAA,gBACZ;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,UAAY;AAAA,sBACV,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,eAAiB,CAAC,YAAY;AAAA,sBAC9B,UAAY;AAAA,sBACZ,uBAAyB;AAAA,sBACzB,KAAO;AAAA,oBACT;AAAA,oBACA,uBAAyB;AAAA,oBACzB,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,cACF;AAAA,cACA,KAAO;AAAA,YACT;AAAA,YACA,OAAS;AAAA,YACT,iBAAmB;AAAA,YACnB,SAAW;AAAA,YACX,YAAc;AAAA,UAChB;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,MAAQ;AAAA,cACN,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,OAAS,CAAC;AAAA,cACV,YAAc;AAAA,gBACZ;AAAA,kBACE,WAAa;AAAA,oBACX,YAAc;AAAA,sBACZ,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,oBACA,IAAM;AAAA,oBACN,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,iBAAmB;AAAA,oBACnB,gBAAkB;AAAA,sBAChB,YAAc;AAAA,wBACZ,YAAc;AAAA,0BACZ,IAAM;AAAA,0BACN,MAAQ;AAAA,0BACR,UAAY;AAAA,0BACZ,wBAA0B,CAAC;AAAA,0BAC3B,uBAAyB;AAAA,0BACzB,KAAO;AAAA,0BACP,kBAAoB;AAAA,4BAClB,gBAAkB;AAAA,4BAClB,YAAc;AAAA,0BAChB;AAAA,wBACF;AAAA,wBACA,IAAM;AAAA,wBACN,YAAc;AAAA,wBACd,UAAY;AAAA,wBACZ,QAAU;AAAA,wBACV,iBAAmB;AAAA,wBACnB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,wBACd,UAAY;AAAA,wBACZ,uBAAyB;AAAA,wBACzB,KAAO;AAAA,wBACP,kBAAoB;AAAA,0BAClB,gBAAkB;AAAA,0BAClB,YAAc;AAAA,wBAChB;AAAA,sBACF;AAAA,sBACA,IAAM;AAAA,sBACN,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,QAAU;AAAA,sBACV,iBAAmB;AAAA,sBACnB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,UAAY;AAAA,oBACZ,UAAY;AAAA,oBACZ,iBAAmB;AAAA,sBACjB,UAAY;AAAA,sBACZ,IAAM;AAAA,sBACN,YAAc;AAAA,sBACd,UAAY;AAAA,sBACZ,QAAU;AAAA,sBACV,MAAQ;AAAA,sBACR,iBAAmB;AAAA,sBACnB,UAAY;AAAA,sBACZ,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,sBACA,OAAS;AAAA,oBACX;AAAA,oBACA,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,kBACP,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,YAAc;AAAA,sBACZ;AAAA,wBACE,WAAa;AAAA,0BACX,WAAa;AAAA,4BACX;AAAA,8BACE,YAAc;AAAA,gCACZ,YAAc;AAAA,kCACZ,IAAM;AAAA,kCACN,MAAQ;AAAA,kCACR,UAAY;AAAA,kCACZ,wBAA0B,CAAC;AAAA,kCAC3B,uBAAyB;AAAA,kCACzB,KAAO;AAAA,kCACP,kBAAoB;AAAA,oCAClB,gBAAkB;AAAA,oCAClB,YAAc;AAAA,kCAChB;AAAA,gCACF;AAAA,gCACA,IAAM;AAAA,gCACN,YAAc;AAAA,gCACd,UAAY;AAAA,gCACZ,QAAU;AAAA,gCACV,iBAAmB;AAAA,gCACnB,gBAAkB;AAAA,gCAClB,YAAc;AAAA,gCACd,UAAY;AAAA,gCACZ,uBAAyB;AAAA,gCACzB,KAAO;AAAA,gCACP,kBAAoB;AAAA,kCAClB,gBAAkB;AAAA,kCAClB,YAAc;AAAA,gCAChB;AAAA,8BACF;AAAA,8BACA,IAAM;AAAA,8BACN,YAAc;AAAA,8BACd,UAAY;AAAA,8BACZ,QAAU;AAAA,8BACV,iBAAmB;AAAA,8BACnB,gBAAkB;AAAA,8BAClB,YAAc;AAAA,8BACd,UAAY;AAAA,8BACZ,KAAO;AAAA,8BACP,kBAAoB;AAAA,gCAClB,gBAAkB;AAAA,gCAClB,YAAc;AAAA,8BAChB;AAAA,4BACF;AAAA,0BACF;AAAA,0BACA,YAAc;AAAA,4BACZ,eAAiB;AAAA,8BACf;AAAA,gCACE,gBAAkB;AAAA,gCAClB,YAAc;AAAA,8BAChB;AAAA,4BACF;AAAA,4BACA,IAAM;AAAA,4BACN,MAAQ;AAAA,4BACR,UAAY;AAAA,4BACZ,wBAA0B,CAAC;AAAA,4BAC3B,uBAAyB;AAAA,4BACzB,KAAO;AAAA,4BACP,kBAAoB;AAAA,8BAClB,gBAAkB;AAAA,8BAClB,YAAc;AAAA,4BAChB;AAAA,0BACF;AAAA,0BACA,IAAM;AAAA,0BACN,YAAc;AAAA,0BACd,UAAY;AAAA,0BACZ,QAAU;AAAA,0BACV,MAAQ;AAAA,0BACR,iBAAmB;AAAA,0BACnB,eAAiB,CAAC;AAAA,0BAClB,OAAS,CAAC;AAAA,0BACV,UAAY;AAAA,0BACZ,KAAO;AAAA,0BACP,SAAW;AAAA,0BACX,kBAAoB;AAAA,4BAClB,gBAAkB;AAAA,4BAClB,YAAc;AAAA,0BAChB;AAAA,wBACF;AAAA,wBACA,IAAM;AAAA,wBACN,UAAY;AAAA,wBACZ,KAAO;AAAA,sBACT;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,YACA,eAAiB,CAAC,GAAG;AAAA,YACrB,eAAiB;AAAA,cACf,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,MAAQ;AAAA,YACV;AAAA,YACA,aAAe;AAAA,YACf,MAAQ;AAAA,YACR,WAAa,CAAC;AAAA,YACd,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,WAAa;AAAA,cACX,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,WAAa,CAAC;AAAA,cACd,KAAO;AAAA,YACT;AAAA,YACA,YAAc;AAAA,cACZ,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc;AAAA,gBACZ;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,UAAY;AAAA,sBACV,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,eAAiB,CAAC,YAAY;AAAA,sBAC9B,UAAY;AAAA,sBACZ,uBAAyB;AAAA,sBACzB,KAAO;AAAA,oBACT;AAAA,oBACA,uBAAyB;AAAA,oBACzB,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,gBACA;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,gBACA;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,cACF;AAAA,cACA,KAAO;AAAA,YACT;AAAA,YACA,kBAAoB;AAAA,cAClB,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc;AAAA,gBACZ;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,gBACA;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,cACF;AAAA,cACA,KAAO;AAAA,YACT;AAAA,YACA,OAAS;AAAA,YACT,iBAAmB;AAAA,YACnB,SAAW;AAAA,YACX,YAAc;AAAA,UAChB;AAAA,UACA;AAAA,YACE,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,YACP,OAAS,CAAC;AAAA,YACV,MAAQ;AAAA,cACN,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,OAAS,CAAC;AAAA,cACV,YAAc;AAAA,gBACZ;AAAA,kBACE,YAAc;AAAA,oBACZ,IAAM;AAAA,oBACN,YAAc;AAAA,oBACd,UAAY;AAAA,oBACZ,QAAU;AAAA,oBACV,iBAAmB;AAAA,oBACnB,cAAgB;AAAA,sBACd,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,UAAY;AAAA,sBACZ,wBAA0B,CAAC;AAAA,sBAC3B,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,UAAY;AAAA,oBACZ,UAAY;AAAA,oBACZ,eAAiB;AAAA,sBACf,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,UAAY;AAAA,sBACZ,wBAA0B,CAAC;AAAA,sBAC3B,uBAAyB;AAAA,sBACzB,KAAO;AAAA,sBACP,kBAAoB;AAAA,wBAClB,gBAAkB;AAAA,wBAClB,YAAc;AAAA,sBAChB;AAAA,oBACF;AAAA,oBACA,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,IAAM;AAAA,kBACN,UAAY;AAAA,kBACZ,KAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,YACA,eAAiB,CAAC,GAAG;AAAA,YACrB,eAAiB;AAAA,cACf,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,KAAO;AAAA,cACP,MAAQ;AAAA,YACV;AAAA,YACA,aAAe;AAAA,YACf,MAAQ;AAAA,YACR,WAAa;AAAA,cACX;AAAA,gBACE,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,cAAgB;AAAA,kBACd,IAAM;AAAA,kBACN,MAAQ;AAAA,kBACR,eAAiB,CAAC,WAAW;AAAA,kBAC7B,UAAY;AAAA,kBACZ,uBAAyB;AAAA,kBACzB,KAAO;AAAA,gBACT;AAAA,gBACA,UAAY;AAAA,gBACZ,KAAO;AAAA,cACT;AAAA,YACF;AAAA,YACA,MAAQ;AAAA,YACR,cAAgB;AAAA,YAChB,WAAa;AAAA,cACX,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,WAAa,CAAC;AAAA,cACd,KAAO;AAAA,YACT;AAAA,YACA,YAAc;AAAA,cACZ,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc;AAAA,gBACZ;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,UAAY;AAAA,oBACZ,UAAY;AAAA,sBACV,IAAM;AAAA,sBACN,MAAQ;AAAA,sBACR,eAAiB,CAAC,YAAY;AAAA,sBAC9B,UAAY;AAAA,sBACZ,uBAAyB;AAAA,sBACzB,KAAO;AAAA,oBACT;AAAA,oBACA,uBAAyB;AAAA,oBACzB,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,gBACA;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,gBACA;AAAA,kBACE,UAAY;AAAA,kBACZ,IAAM;AAAA,kBACN,YAAc;AAAA,kBACd,MAAQ;AAAA,kBACR,cAAgB;AAAA,kBAChB,UAAY;AAAA,kBACZ,OAAS;AAAA,kBACT,KAAO;AAAA,kBACP,eAAiB;AAAA,kBACjB,iBAAmB;AAAA,kBACnB,kBAAoB;AAAA,oBAClB,gBAAkB;AAAA,oBAClB,YAAc;AAAA,kBAChB;AAAA,kBACA,UAAY;AAAA,oBACV,IAAM;AAAA,oBACN,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,KAAO;AAAA,oBACP,kBAAoB;AAAA,sBAClB,gBAAkB;AAAA,sBAClB,YAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,kBACA,YAAc;AAAA,gBAChB;AAAA,cACF;AAAA,cACA,KAAO;AAAA,YACT;AAAA,YACA,kBAAoB;AAAA,cAClB,IAAM;AAAA,cACN,UAAY;AAAA,cACZ,YAAc,CAAC;AAAA,cACf,KAAO;AAAA,YACT;AAAA,YACA,OAAS;AAAA,YACT,iBAAmB;AAAA,YACnB,SAAW;AAAA,YACX,YAAc;AAAA,UAChB;AAAA,QACF;AAAA,QACA,UAAY;AAAA,QACZ,eAAiB;AAAA,UACf;AAAA,YACE,UAAY;AAAA,cACV,IAAM;AAAA,cACN,MAAQ;AAAA,cACR,eAAiB,CAAC,WAAW;AAAA,cAC7B,UAAY;AAAA,cACZ,uBAAyB;AAAA,cACzB,KAAO;AAAA,YACT;AAAA,YACA,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,UACT;AAAA,UACA;AAAA,YACE,UAAY;AAAA,cACV,IAAM;AAAA,cACN,MAAQ;AAAA,cACR,eAAiB,CAAC,WAAW;AAAA,cAC7B,UAAY;AAAA,cACZ,uBAAyB;AAAA,cACzB,KAAO;AAAA,YACT;AAAA,YACA,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,UACT;AAAA,UACA;AAAA,YACE,UAAY;AAAA,cACV,IAAM;AAAA,cACN,MAAQ;AAAA,cACR,eAAiB,CAAC,WAAW;AAAA,cAC7B,UAAY;AAAA,cACZ,uBAAyB;AAAA,cACzB,KAAO;AAAA,YACT;AAAA,YACA,IAAM;AAAA,YACN,UAAY;AAAA,YACZ,KAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,eAAiB;AAAA,QACjB,sBAAwB,CAAC;AAAA,QACzB,cAAgB;AAAA,QAChB,eAAiB;AAAA,UACf,IAAM;AAAA,UACN,UAAY;AAAA,UACZ,KAAO;AAAA,UACP,MAAQ;AAAA,QACV;AAAA,QACA,kBAAoB;AAAA,QACpB,yBAA2B;AAAA,UACzB;AAAA,UAAO;AAAA,UAAO;AAAA,UAAO;AAAA,UAAK;AAAA,UAAO;AAAA,UAAO;AAAA,QAC1C;AAAA,QACA,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,OAAS;AAAA,QACT,YAAc,CAAC,OAAO,OAAO,KAAK;AAAA,QAClC,YAAc,CAAC,KAAK;AAAA,MACtB;AAAA,IACF;AAAA,IACA,SAAW;AAAA,EACb;AAAA,EACA,IAAM;AACR;;;AC7xGA;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,YAAY,MAAQ,WAAW,cAAgB,UAAU;AAAA,QACnE,EAAE,MAAQ,QAAQ,MAAQ,WAAW,cAAgB,UAAU;AAAA,QAC/D,EAAE,MAAQ,cAAc,MAAQ,UAAU,cAAgB,SAAS;AAAA,QACnE,EAAE,MAAQ,cAAc,MAAQ,UAAU,cAAgB,SAAS;AAAA,QACnE,EAAE,MAAQ,iBAAiB,MAAQ,QAAQ,cAAgB,OAAO;AAAA,QAClE,EAAE,MAAQ,gBAAgB,MAAQ,SAAS,cAAgB,QAAQ;AAAA,MACrE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,WAAW,MAAQ,WAAW,cAAgB,UAAU;AAAA,QAClE,EAAE,MAAQ,UAAU,MAAQ,UAAU,cAAgB,SAAS;AAAA,MACjE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,MACnE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,cAAc,MAAQ,WAAW,cAAgB,UAAU;AAAA,MACvE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA,EAAE,MAAQ,WAAW,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAClE,EAAE,MAAQ,aAAa,MAAQ,QAAQ,cAAgB,OAAO;AAAA,YAC9D;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA,EAAE,MAAQ,WAAW,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAClE,EAAE,MAAQ,aAAa,MAAQ,QAAQ,cAAgB,OAAO;AAAA,YAC9D;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,cACF;AAAA,cACA,cAAgB;AAAA,cAChB,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,QAAU,CAAC;AAAA,IACb;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,MAAQ,IAAI,MAAQ,WAAW,cAAgB,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU,CAAC;AAAA,IACb;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,QAC/D,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,QACjE,EAAE,MAAQ,oBAAoB,MAAQ,SAAS,cAAgB,QAAQ;AAAA,MACzE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,MAAQ,IAAI,MAAQ,WAAW,cAAgB,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,WAAW,MAAQ,WAAW,cAAgB,UAAU;AAAA,MACpE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,WAAW,MAAQ,WAAW,cAAgB,UAAU;AAAA,MACpE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,MAAQ,WAAW,MAAQ,WAAW,cAAgB,UAAU;AAAA,QAClE,EAAE,MAAQ,UAAU,MAAQ,QAAQ,cAAgB,OAAO;AAAA,QAC3D,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,QAChE;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,QACA,EAAE,MAAQ,gBAAgB,MAAQ,UAAU,cAAgB,SAAS;AAAA,MACvE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU,CAAC,EAAE,MAAQ,IAAI,MAAQ,WAAW,cAAgB,UAAU,CAAC;AAAA,IACzE;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ,EAAE,MAAQ,WAAW,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAClE,EAAE,MAAQ,UAAU,MAAQ,QAAQ,cAAgB,OAAO;AAAA,YAC3D,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,WAAW,MAAQ,WAAW,cAAgB,UAAU;AAAA,MACpE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,MAClE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,QACjE,EAAE,MAAQ,OAAO,MAAQ,WAAW,cAAgB,UAAU;AAAA,MAChE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,MACjE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,MAAQ,IAAI,MAAQ,WAAW,cAAgB,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,YACjE,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,YAC/D,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,YAC/D;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA,EAAE,MAAQ,aAAa,MAAQ,SAAS,cAAgB,QAAQ;AAAA,UAClE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ;AAAA,cACE,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,cACF;AAAA,cACA,cAAgB;AAAA,cAChB,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA,EAAE,MAAQ,aAAa,MAAQ,SAAS,cAAgB,QAAQ;AAAA,UAClE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,YACjE,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,YAC/D,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,YAC/D;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA,EAAE,MAAQ,aAAa,MAAQ,SAAS,cAAgB,QAAQ;AAAA,UAClE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,OAAO,MAAQ,WAAW,cAAgB,UAAU;AAAA,MAChE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,QAC/D;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ;AAAA,cACE,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,cAAgB;AAAA,gBAClB;AAAA,cACF;AAAA,cACA,cAAgB;AAAA,cAChB,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA,EAAE,MAAQ,WAAW,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAClE;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA,EAAE,MAAQ,YAAY,MAAQ,WAAW,cAAgB,UAAU;AAAA,UACrE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,MAAQ,WAAW,MAAQ,SAAS,cAAgB,QAAQ;AAAA,MAChE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,MAAQ,IAAI,MAAQ,WAAW,cAAgB,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR,EAAE,MAAQ,IAAI,MAAQ,WAAW,cAAgB,UAAU;AAAA,QAC3D,EAAE,MAAQ,IAAI,MAAQ,WAAW,cAAgB,UAAU;AAAA,MAC7D;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,YACjE,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,YAC/D,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,YAC/D;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA,EAAE,MAAQ,aAAa,MAAQ,SAAS,cAAgB,QAAQ;AAAA,UAClE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,QACjE,EAAE,MAAQ,kBAAkB,MAAQ,SAAS,cAAgB,QAAQ;AAAA,MACvE;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,YACZ,EAAE,MAAQ,UAAU,MAAQ,WAAW,cAAgB,UAAU;AAAA,YACjE,EAAE,MAAQ,SAAS,MAAQ,WAAW,cAAgB,UAAU;AAAA,YAChE,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,YAC/D,EAAE,MAAQ,YAAY,MAAQ,SAAS,cAAgB,QAAQ;AAAA,YAC/D;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,cAAgB;AAAA,YAClB;AAAA,YACA,EAAE,MAAQ,aAAa,MAAQ,SAAS,cAAgB,QAAQ;AAAA,UAClE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU,CAAC;AAAA,IACb;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,cAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,IACA,EAAE,MAAQ,WAAW,iBAAmB,UAAU;AAAA,EACpD;AAAA,EACA,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AACF;;;AC9/BA,sBAAC,KAAM,CAAC,EAAC,QAAS,CAAC,EAAC,cAAe,UAAS,MAAO,QAAO,MAAO,SAAQ,GAAE,EAAC,cAAe,UAAS,MAAO,UAAS,MAAO,SAAQ,GAAE,EAAC,cAAe,SAAQ,MAAO,aAAY,MAAO,QAAO,CAAC,GAAE,iBAAkB,cAAa,MAAO,cAAa,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,WAAU,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,aAAY,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,WAAU,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,aAAY,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,EAAC,cAAe,SAAQ,MAAO,IAAG,MAAO,QAAO,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,mBAAkB,MAAO,UAAS,CAAC,GAAE,MAAO,qBAAoB,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,qBAAoB,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,QAAO,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,QAAO,SAAU,CAAC,EAAC,cAAe,UAAS,MAAO,IAAG,MAAO,SAAQ,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,UAAS,SAAU,CAAC,EAAC,cAAe,UAAS,MAAO,IAAG,MAAO,SAAQ,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,eAAc,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,gBAAe,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,CAAC,GAAE,cAAe,SAAQ;;;ACA5nH,uBAAC,KAAM,CAAC,EAAC,QAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,cAAa,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,QAAO,MAAO,YAAW,MAAO,OAAM,CAAC,GAAE,MAAO,kBAAiB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,WAAU,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,CAAC,GAAE,MAAO,aAAY,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,eAAc,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,oBAAmB,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,QAAO,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,QAAO,SAAU,CAAC,EAAC,cAAe,UAAS,MAAO,IAAG,MAAO,SAAQ,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,WAAU,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,oBAAmB,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,SAAQ,MAAO,QAAO,MAAO,QAAO,CAAC,GAAE,MAAO,oBAAmB,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,QAAO,MAAO,YAAW,MAAO,OAAM,CAAC,GAAE,MAAO,qBAAoB,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,UAAS,MAAO,eAAc,MAAO,SAAQ,CAAC,GAAE,MAAO,qBAAoB,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,UAAS,SAAU,CAAC,EAAC,cAAe,UAAS,MAAO,IAAG,MAAO,SAAQ,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,EAAC,cAAe,UAAS,MAAO,IAAG,MAAO,SAAQ,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,gBAAe,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,CAAC,EAAC;;;ACA/5H;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACvE,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,SAAS,MAAQ,WAAW,MAAQ,QAAQ;AAAA,QAC9D;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,YAAY,MAAQ,UAAU;AAAA,MACrE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,YAAc;AAAA,YACZ,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,YACjE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,YAChE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA,EAAE,cAAgB,SAAS,MAAQ,aAAa,MAAQ,QAAQ;AAAA,UAClE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,QACrE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,SAAS,MAAQ,WAAW,MAAQ,QAAQ;AAAA,QAC9D,EAAE,cAAgB,WAAW,MAAQ,gBAAgB,MAAQ,UAAU;AAAA,MACzE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACjE;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;;;ACzQA;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,MAClE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ,CAAC;AAAA,MACpE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACnE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACjE,EAAE,cAAgB,WAAW,MAAQ,YAAY,MAAQ,UAAU;AAAA,MACrE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,eAAe,MAAQ,UAAU;AAAA,QACtE,EAAE,cAAgB,SAAS,MAAQ,aAAa,MAAQ,QAAQ;AAAA,MAClE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,YAAY,MAAQ,UAAU;AAAA,MACrE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACnE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACnE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA,EAAE,iBAAmB,WAAW,MAAQ,UAAU;AAAA,EACpD;AAAA,EACA,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;;;ACzNA;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL,EAAE,QAAU,CAAC,GAAG,iBAAmB,cAAc,MAAQ,cAAc;AAAA,IACvE;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,YAAc;AAAA,YACZ,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,YACjE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,YAChE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA,EAAE,cAAgB,SAAS,MAAQ,aAAa,MAAQ,QAAQ;AAAA,UAClE;AAAA,UACA,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,UAAU,MAAQ,IAAI,MAAQ,SAAS,CAAC;AAAA,MACtE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,QACrE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,MACjE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACnE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,uBAAuB,MAAQ,IAAI,MAAQ,UAAU;AAAA,MACzE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,QAC/D,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,SAAS,MAAQ,QAAQ,MAAQ,QAAQ;AAAA,MAC7D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,QAC/D,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,SAAS,MAAQ,QAAQ,MAAQ,QAAQ;AAAA,QAC3D;AAAA,UACE,YAAc;AAAA,YACZ,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,YAChE;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,UACnE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,QAC/D,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,SAAS,MAAQ,QAAQ,MAAQ,QAAQ;AAAA,MAC7D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ,CAAC;AAAA,MACpE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,aAAa,MAAQ,QAAQ,MAAQ,YAAY;AAAA,QACnE,EAAE,cAAgB,aAAa,MAAQ,SAAS,MAAQ,YAAY;AAAA,QACpE,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,MACjE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,MACvE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC,EAAE,cAAgB,UAAU,MAAQ,OAAO,MAAQ,SAAS,CAAC;AAAA,MACxE,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,MAAM,MAAQ,UAAU;AAAA,QAC7D,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACjE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,MAClE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ,CAAC;AAAA,MACpE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,QAC9D,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,MACjE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,aAAa,MAAQ,IAAI,MAAQ,YAAY;AAAA,MACjE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,SAAS,MAAQ,kBAAkB,MAAQ,QAAQ;AAAA,MACvE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACjE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,SAAS,MAAQ,QAAQ,MAAQ,QAAQ;AAAA,QAC3D,EAAE,cAAgB,SAAS,MAAQ,aAAa,MAAQ,QAAQ;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,MAClE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,MACvE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,aAAa,MAAQ,IAAI,MAAQ,YAAY;AAAA,QAC/D,EAAE,cAAgB,aAAa,MAAQ,IAAI,MAAQ,YAAY;AAAA,QAC/D,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ;AAAA,MACzD;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,UAAU,MAAQ,IAAI,MAAQ,SAAS,CAAC;AAAA,MACtE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ;AAAA,MACzD;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,UAAU,MAAQ,IAAI,MAAQ,SAAS,CAAC;AAAA,MACtE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ;AAAA,MACzD;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,UAAU,MAAQ,IAAI,MAAQ,SAAS,CAAC;AAAA,MACtE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC,EAAE,cAAgB,UAAU,MAAQ,IAAI,MAAQ,SAAS,CAAC;AAAA,MACrE,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,MAAM,MAAQ,UAAU;AAAA,QAC7D,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACjE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,SAAS,MAAQ,OAAO,MAAQ,QAAQ;AAAA,MAC5D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,MACvE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,QAC9D,EAAE,cAAgB,SAAS,MAAQ,OAAO,MAAQ,QAAQ;AAAA,MAC5D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,QAC9D,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,UAAU,MAAQ,eAAe,MAAQ,SAAS;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ;AAAA,QACvD,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ;AAAA,MACzD;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,QAC/D,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACnE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,SAAS,MAAQ,QAAQ,MAAQ,QAAQ;AAAA,MAC7D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,MAAM,MAAQ,UAAU;AAAA,QAC7D,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACjE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,SAAS,MAAQ,OAAO,MAAQ,QAAQ;AAAA,MAC5D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,YAAc;AAAA,YACZ,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,YACjE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,YAChE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA,EAAE,cAAgB,SAAS,MAAQ,aAAa,MAAQ,QAAQ;AAAA,UAClE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,QACrE;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,WAAW,MAAQ,gBAAgB,MAAQ,UAAU;AAAA,MACzE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACnE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA,EAAE,iBAAmB,WAAW,MAAQ,UAAU;AAAA,EACpD;AAAA,EACA,iBAAmB;AAAA,EACnB,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;;;ACrvBA;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,SAAS,MAAQ,QAAQ,MAAQ,QAAQ;AAAA,MAC7D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,uBAAuB,MAAQ,IAAI,MAAQ,UAAU;AAAA,MACzE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,kBAAkB,MAAQ,IAAI,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC,EAAE,cAAgB,SAAS,MAAQ,QAAQ,MAAQ,QAAQ,CAAC;AAAA,MACvE,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,kBAAkB,MAAQ,IAAI,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,QAC/D,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACnE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,uBAAuB,MAAQ,IAAI,MAAQ,UAAU;AAAA,MACzE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;;;ACvOA;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACnE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,MACjE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,uBAAuB,MAAQ,IAAI,MAAQ,UAAU;AAAA,MACzE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,SAAS,MAAQ,WAAW,MAAQ,QAAQ;AAAA,QAC9D;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC,EAAE,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO,CAAC;AAAA,MACrE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC3D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC3D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,YAAY,MAAQ,UAAU;AAAA,MACrE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,YAAc;AAAA,YACZ,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,YACjE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,YAChE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA,EAAE,cAAgB,SAAS,MAAQ,aAAa,MAAQ,QAAQ;AAAA,UAClE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,QACrE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,SAAS,MAAQ,WAAW,MAAQ,QAAQ;AAAA,QAC9D,EAAE,cAAgB,WAAW,MAAQ,gBAAgB,MAAQ,UAAU;AAAA,MACzE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACnE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;;;AC7iBA,kCAAC,KAAM,CAAC,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,UAAS,MAAO,SAAQ,MAAO,SAAQ,GAAE,EAAC,cAAe,UAAS,MAAO,WAAU,MAAO,SAAQ,CAAC,GAAE,iBAAkB,cAAa,MAAO,cAAa,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,oBAAmB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,mBAAkB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,mBAAkB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,qBAAoB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,sBAAqB,MAAO,UAAS,CAAC,GAAE,MAAO,wBAAuB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,uBAAsB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,yCAAwC,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,gBAAe,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,mCAAkC,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,CAAC,GAAE,MAAO,eAAc,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,MAAO,uBAAsB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,0BAAyB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,oBAAmB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,CAAC,GAAE,MAAO,yBAAwB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,gBAAe,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,gCAA+B,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,kBAAiB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,sBAAqB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,4BAA2B,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,4BAA2B,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,kBAAiB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,yBAAwB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,kBAAiB,MAAO,UAAS,CAAC,GAAE,MAAO,yBAAwB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,kBAAiB,MAAO,UAAS,CAAC,GAAE,MAAO,yBAAwB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,uBAAsB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,iCAAgC,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,mBAAkB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,UAAS,MAAO,OAAM,MAAO,SAAQ,CAAC,GAAE,MAAO,iBAAgB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,eAAc,MAAO,UAAS,CAAC,GAAE,MAAO,0BAAyB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,CAAC,GAAE,MAAO,8BAA6B,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,2BAA0B,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,MAAO,gCAA+B,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,wBAAuB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,yBAAwB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,6BAA4B,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,mBAAkB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,gBAAe,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,qBAAoB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,iBAAgB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,iBAAgB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,iBAAgB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,QAAO,MAAO,YAAW,MAAO,OAAM,CAAC,GAAE,MAAO,kBAAiB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,OAAM,cAAe,UAAS,MAAO,WAAU,MAAO,SAAQ,CAAC,GAAE,MAAO,cAAa,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,uBAAsB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,GAAE,MAAO,sBAAqB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,mBAAkB,MAAO,UAAS,CAAC,GAAE,MAAO,qBAAoB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,sBAAqB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,iBAAgB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,kBAAiB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,wBAAuB,MAAO,UAAS,CAAC,GAAE,MAAO,2BAA0B,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,UAAS,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,GAAE,MAAO,WAAU,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,qBAAoB,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,CAAC,GAAE,MAAO,oBAAmB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,eAAc,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,eAAc,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,eAAc,MAAO,UAAS,CAAC,GAAE,MAAO,qBAAoB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,iBAAgB,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,kBAAiB,MAAO,UAAS,CAAC,GAAE,MAAO,uBAAsB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,qBAAoB,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,CAAC,GAAE,MAAO,wBAAuB,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,kCAAiC,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,sBAAqB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,iBAAgB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,yBAAwB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,sBAAqB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,+BAA8B,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,+BAA8B,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,eAAc,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,oBAAmB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,cAAa,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,eAAc,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,SAAQ,SAAU,CAAC,EAAC,cAAe,kBAAiB,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,UAAS,SAAU,CAAC,EAAC,cAAe,mBAAkB,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,OAAM,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,WAAU,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,aAAY,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,4BAA2B,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,iBAAgB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,iBAAgB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,uBAAsB,MAAO,UAAS,GAAE,EAAC,YAAa,CAAC,EAAC,cAAe,WAAU,MAAO,sBAAqB,MAAO,UAAS,GAAE,EAAC,cAAe,QAAO,MAAO,YAAW,MAAO,OAAM,GAAE,EAAC,cAAe,eAAc,MAAO,WAAU,MAAO,cAAa,GAAE,EAAC,cAAe,WAAU,MAAO,iBAAgB,MAAO,UAAS,CAAC,GAAE,cAAe,qDAAoD,MAAO,UAAS,MAAO,QAAO,CAAC,GAAE,MAAO,gCAA+B,SAAU,CAAC,EAAC,YAAa,CAAC,EAAC,cAAe,WAAU,MAAO,sBAAqB,MAAO,UAAS,GAAE,EAAC,cAAe,QAAO,MAAO,YAAW,MAAO,OAAM,GAAE,EAAC,cAAe,eAAc,MAAO,WAAU,MAAO,cAAa,GAAE,EAAC,cAAe,WAAU,MAAO,iBAAgB,MAAO,UAAS,CAAC,GAAE,cAAe,qDAAoD,MAAO,IAAG,MAAO,QAAO,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,mBAAkB,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,aAAY,MAAO,eAAc,MAAO,YAAW,GAAE,EAAC,cAAe,aAAY,MAAO,UAAS,MAAO,YAAW,CAAC,GAAE,MAAO,oBAAmB,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,aAAY,MAAO,eAAc,MAAO,YAAW,GAAE,EAAC,cAAe,aAAY,MAAO,UAAS,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,sBAAqB,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,+BAA8B,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,iBAAgB,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,GAAE,iBAAkB,WAAU,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,aAAY,MAAO,eAAc,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,eAAc,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,uBAAsB,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,WAAU,MAAO,YAAW,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,eAAc,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,cAAa,SAAU,CAAC,EAAC,cAAe,UAAS,MAAO,IAAG,MAAO,SAAQ,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,aAAY,MAAO,eAAc,MAAO,YAAW,GAAE,EAAC,cAAe,aAAY,MAAO,UAAS,MAAO,YAAW,CAAC,GAAE,MAAO,qBAAoB,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,sBAAqB,MAAO,YAAW,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,sBAAqB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,0BAAyB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,6BAA4B,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,oBAAmB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,wBAAuB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,2BAA0B,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,2BAA0B,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,CAAC,GAAE,MAAO,gBAAe,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,CAAC,GAAE,MAAO,iBAAgB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,CAAC,GAAE,MAAO,sBAAqB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,yBAAwB,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,eAAc,MAAO,YAAW,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,aAAY,MAAO,eAAc,MAAO,YAAW,CAAC,GAAE,MAAO,uBAAsB,SAAU,CAAC,EAAC,YAAa,CAAC,EAAC,cAAe,WAAU,MAAO,iBAAgB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,kBAAiB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,QAAO,MAAO,eAAc,MAAO,OAAM,GAAE,EAAC,cAAe,QAAO,MAAO,aAAY,MAAO,OAAM,CAAC,GAAE,cAAe,uDAAsD,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,aAAY,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,WAAU,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,cAAa,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,CAAC,GAAE,MAAO,oBAAmB,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,sBAAqB,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,QAAO,SAAU,CAAC,EAAC,cAAe,UAAS,MAAO,IAAG,MAAO,SAAQ,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,QAAO,MAAO,oBAAmB,MAAO,OAAM,GAAE,EAAC,cAAe,WAAU,MAAO,yBAAwB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,2BAA0B,MAAO,UAAS,CAAC,GAAE,MAAO,kBAAiB,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,WAAU,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,wBAAuB,MAAO,UAAS,CAAC,GAAE,MAAO,cAAa,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,aAAY,MAAO,YAAW,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,iBAAgB,MAAO,UAAS,CAAC,GAAE,MAAO,eAAc,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,gBAAe,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,aAAY,MAAO,YAAW,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,sBAAqB,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,cAAa,MAAO,YAAW,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,aAAY,MAAO,YAAW,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,YAAa,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,SAAQ,MAAO,KAAI,MAAO,QAAO,GAAE,EAAC,cAAe,WAAU,MAAO,KAAI,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,KAAI,MAAO,UAAS,CAAC,GAAE,cAAe,qCAAoC,MAAO,WAAU,MAAO,QAAO,CAAC,GAAE,MAAO,gCAA+B,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,cAAa,MAAO,YAAW,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,aAAY,MAAO,YAAW,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,4BAA2B,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,cAAa,MAAO,YAAW,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,aAAY,MAAO,YAAW,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,YAAa,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,SAAQ,MAAO,KAAI,MAAO,QAAO,GAAE,EAAC,cAAe,WAAU,MAAO,KAAI,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,KAAI,MAAO,UAAS,CAAC,GAAE,cAAe,qCAAoC,MAAO,WAAU,MAAO,QAAO,CAAC,GAAE,MAAO,sCAAqC,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,cAAa,MAAO,YAAW,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,UAAS,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,MAAO,cAAa,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,OAAM,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,oBAAmB,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,OAAM,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,GAAE,EAAC,cAAe,SAAQ,MAAO,SAAQ,MAAO,QAAO,CAAC,GAAE,MAAO,oBAAmB,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,QAAO,MAAO,aAAY,MAAO,OAAM,CAAC,GAAE,MAAO,qBAAoB,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,UAAS,MAAO,YAAW,MAAO,SAAQ,CAAC,GAAE,MAAO,cAAa,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,yBAAwB,MAAO,UAAS,CAAC,GAAE,MAAO,2BAA0B,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,UAAS,MAAO,eAAc,MAAO,SAAQ,CAAC,GAAE,MAAO,qBAAoB,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,UAAS,SAAU,CAAC,EAAC,cAAe,UAAS,MAAO,IAAG,MAAO,SAAQ,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,EAAC,cAAe,UAAS,MAAO,IAAG,MAAO,SAAQ,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,OAAM,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,gBAAe,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,4BAA2B,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,oBAAmB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,CAAC,EAAC;;;ACA99uB;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,YAAc;AAAA,YACZ;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,YAAc;AAAA,YACZ;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,YAAc;AAAA,YACZ;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,YAAc;AAAA,YACZ;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,YAAc;AAAA,YACZ;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;;;ACn0BA;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL,EAAE,QAAU,CAAC,GAAG,iBAAmB,cAAc,MAAQ,cAAc;AAAA,IACvE;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,MAAM,MAAQ,UAAU;AAAA,QAC7D,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,MAClE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,YAAY,MAAQ,UAAU;AAAA,MACrE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,MAAM,MAAQ,UAAU;AAAA,QAC7D,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,UAAU,MAAQ,IAAI,MAAQ,SAAS,CAAC;AAAA,MACtE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,QAC/D,EAAE,cAAgB,WAAW,MAAQ,MAAM,MAAQ,UAAU;AAAA,QAC7D,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,QAC/D,EAAE,cAAgB,WAAW,MAAQ,MAAM,MAAQ,UAAU;AAAA,QAC7D,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,SAAS,MAAQ,QAAQ,MAAQ,QAAQ;AAAA,MAC7D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,YAAY,MAAQ,UAAU;AAAA,QACnE,EAAE,cAAgB,QAAQ,MAAQ,YAAY,MAAQ,OAAO;AAAA,MAC/D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,UAAU,MAAQ,eAAe,MAAQ,SAAS;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,UAAU,MAAQ,IAAI,MAAQ,SAAS,CAAC;AAAA,MACtE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,UAAU,MAAQ,IAAI,MAAQ,SAAS,CAAC;AAAA,MACtE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU;AAAA,QAC/D,EAAE,cAAgB,WAAW,MAAQ,MAAM,MAAQ,UAAU;AAAA,QAC7D,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;;;ACjOA;AAAA,EACI,MAAQ;AAAA,EACR,KAAO;AAAA,IACH;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,uBAAuB,MAAQ,eAAe,MAAQ,UAAU;AAAA,QAClF,EAAE,cAAgB,mCAAmC,MAAQ,2BAA2B,MAAQ,UAAU;AAAA,MAC9G;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QAClF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,OAAO,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACvF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QACjF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,aAAa,MAAQ,UAAU;AAAA,QACrF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,OAAO,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACvF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,aAAa,MAAQ,UAAU,MAAQ,YAAY;AAAA,QACtF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACvF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU,CAAC,EAAE,SAAW,OAAO,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU,CAAC;AAAA,MAC7F,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QACjF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACvF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,iBAAiB,MAAQ,UAAU;AAAA,QACzF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,YAAY,MAAQ,UAAU;AAAA,MACxF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,iBAAiB,MAAQ,UAAU;AAAA,QACzF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,YAAY,MAAQ,UAAU;AAAA,MACxF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU,CAAC,EAAE,SAAW,OAAO,cAAgB,uBAAuB,MAAQ,cAAc,MAAQ,UAAU,CAAC;AAAA,MAC/G,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QAClF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,OAAO,cAAgB,WAAW,MAAQ,eAAe,MAAQ,UAAU;AAAA,QACxF,EAAE,SAAW,OAAO,cAAgB,WAAW,MAAQ,eAAe,MAAQ,UAAU;AAAA,MAC5F;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,OAAO,cAAgB,SAAS,MAAQ,WAAW,MAAQ,QAAQ;AAAA,QAChF,EAAE,SAAW,OAAO,cAAgB,WAAW,MAAQ,iBAAiB,MAAQ,UAAU;AAAA,MAC9F;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU,CAAC,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU,CAAC;AAAA,MAC7F,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,aAAa,MAAQ,UAAU,MAAQ,YAAY;AAAA,QACtF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACvF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,OAAO,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC/E;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,OAAO,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC/E;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,OAAO,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC/E;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QACjF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,OAAO,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC/E;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN;AAAA,UACI,YAAc;AAAA,YACV,EAAE,cAAgB,6BAA6B,MAAQ,UAAU,MAAQ,UAAU;AAAA,YACnF,EAAE,cAAgB,kBAAkB,MAAQ,SAAS,MAAQ,UAAU;AAAA,YACvE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,UACzE;AAAA,UACA,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACZ;AAAA,MACJ;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,OAAO,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC/E;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QACjF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,OAAO,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC/E;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QACjF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QACnF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,kBAAkB,MAAQ,UAAU;AAAA,MAC9F;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QAClF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QAClF,EAAE,SAAW,OAAO,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACvF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,WAAa;AAAA,MACb,QAAU;AAAA,QACN,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QACjF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,aAAa,MAAQ,UAAU;AAAA,QACrF,EAAE,SAAW,MAAM,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QAClF,EAAE,SAAW,OAAO,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACvF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA,EAAE,QAAU,CAAC,GAAG,MAAQ,mBAAmB,SAAW,CAAC,GAAG,iBAAmB,cAAc,MAAQ,WAAW;AAAA,IAC9G;AAAA,MACI,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACrE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,UAAU,MAAQ,mBAAmB,MAAQ,SAAS,CAAC;AAAA,MACpF,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACrE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,aAAa,MAAQ,WAAW,MAAQ,YAAY,CAAC;AAAA,MAClF,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,WAAW,MAAQ,QAAQ,MAAQ,UAAU,CAAC;AAAA,MAC3E,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,uBAAuB,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACpF,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACP,EAAE,cAAgB,WAAW,MAAQ,eAAe,MAAQ,UAAU;AAAA,QACtE,EAAE,cAAgB,WAAW,MAAQ,eAAe,MAAQ,UAAU;AAAA,MAC1E;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,aAAa,MAAQ,IAAI,MAAQ,YAAY,CAAC;AAAA,MAC5E,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACjE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,WAAW,MAAQ,eAAe,MAAQ,UAAU;AAAA,MAC1E;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,kBAAkB,MAAQ,SAAS,MAAQ,UAAU;AAAA,QACvE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,WAAW,MAAQ,eAAe,MAAQ,UAAU;AAAA,MAC1E;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU,CAAC;AAAA,MAC9E,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU,CAAC;AAAA,MAC5E,MAAQ;AAAA,MACR,SAAW;AAAA,QACP;AAAA,UACI,YAAc;AAAA,YACV,EAAE,cAAgB,6BAA6B,MAAQ,UAAU,MAAQ,UAAU;AAAA,YACnF,EAAE,cAAgB,kBAAkB,MAAQ,SAAS,MAAQ,UAAU;AAAA,YACvE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,UACzE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACZ;AAAA,MACJ;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,eAAe,MAAQ,UAAU,CAAC;AAAA,MACnF,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU,CAAC;AAAA,MAC9E,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACjE,EAAE,cAAgB,WAAW,MAAQ,aAAa,MAAQ,UAAU;AAAA,MACxE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,QAAQ,MAAQ,IAAI,MAAQ,OAAO,CAAC;AAAA,MAClE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,eAAe,MAAQ,UAAU,CAAC;AAAA,MACnF,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,mCAAmC,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MAChG,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU,CAAC;AAAA,MAC5E,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,6BAA6B,MAAQ,QAAQ,MAAQ,QAAQ;AAAA,QAC/E,EAAE,cAAgB,SAAS,MAAQ,WAAW,MAAQ,QAAQ;AAAA,QAC9D,EAAE,cAAgB,WAAW,MAAQ,iBAAiB,MAAQ,UAAU;AAAA,MAC5E;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,gBAAgB,MAAQ,UAAU;AAAA,QACvE,EAAE,cAAgB,WAAW,MAAQ,kBAAkB,MAAQ,UAAU;AAAA,MAC7E;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,aAAa,MAAQ,WAAW,MAAQ,YAAY,CAAC;AAAA,MAClF,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA,EAAE,QAAU,CAAC,GAAG,MAAQ,qBAAqB,SAAW,CAAC,GAAG,iBAAmB,cAAc,MAAQ,WAAW;AAAA,IAChH;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO,CAAC;AAAA,MACrE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC7D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE,EAAE,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC7D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC7D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN;AAAA,UACI,YAAc;AAAA,YACV,EAAE,cAAgB,6BAA6B,MAAQ,UAAU,MAAQ,UAAU;AAAA,YACnF,EAAE,cAAgB,kBAAkB,MAAQ,SAAS,MAAQ,UAAU;AAAA,YACvE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,UACzE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACZ;AAAA,MACJ;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO,CAAC;AAAA,MACrE,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,QAAQ,MAAQ,QAAQ,MAAQ,OAAO;AAAA,MAC7D;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACvE,MAAQ;AAAA,MACR,SAAW;AAAA,QACP,EAAE,cAAgB,6BAA6B,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACnF,EAAE,cAAgB,kBAAkB,MAAQ,SAAS,MAAQ,UAAU;AAAA,QACvE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,QAC/D,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,MACzE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,WAAW,MAAQ,YAAY,MAAQ,UAAU,CAAC;AAAA,MAC/E,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA,EAAE,QAAU,CAAC,GAAG,MAAQ,6BAA6B,SAAW,CAAC,GAAG,iBAAmB,cAAc,MAAQ,WAAW;AAAA,IACxH;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAClE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN;AAAA,UACI,YAAc;AAAA,YACV,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,YACjE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,YAChE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D,EAAE,cAAgB,WAAW,MAAQ,gBAAgB,MAAQ,UAAU;AAAA,YACvE,EAAE,cAAgB,WAAW,MAAQ,wBAAwB,MAAQ,UAAU;AAAA,YAC/E,EAAE,cAAgB,WAAW,MAAQ,sBAAsB,MAAQ,UAAU;AAAA,YAC7E,EAAE,cAAgB,WAAW,MAAQ,gBAAgB,MAAQ,UAAU;AAAA,YACvE,EAAE,cAAgB,WAAW,MAAQ,wBAAwB,MAAQ,UAAU;AAAA,YAC/E,EAAE,cAAgB,SAAS,MAAQ,oBAAoB,MAAQ,QAAQ;AAAA,YACvE,EAAE,cAAgB,SAAS,MAAQ,aAAa,MAAQ,QAAQ;AAAA,UACpE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACZ;AAAA,QACA,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,QACrE,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACP,EAAE,cAAgB,SAAS,MAAQ,WAAW,MAAQ,QAAQ;AAAA,QAC9D,EAAE,cAAgB,WAAW,MAAQ,gBAAgB,MAAQ,UAAU;AAAA,MAC3E;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,kBAAkB,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACxE,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACrE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA,EAAE,QAAU,CAAC,GAAG,MAAQ,mBAAmB,SAAW,CAAC,GAAG,iBAAmB,cAAc,MAAQ,WAAW;AAAA,IAC9G;AAAA,MACI,QAAU,CAAC,EAAE,cAAgB,kBAAkB,MAAQ,mBAAmB,MAAQ,UAAU,CAAC;AAAA,MAC7F,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,IACA;AAAA,MACI,QAAU;AAAA,QACN,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,QACjE,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACrE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACZ;AAAA,EACJ;AAAA,EACA,WAAa;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,EACd;AACJ;;;ACvrBA;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,WAAW,MAAQ,aAAa,MAAQ,UAAU;AAAA,QACpE,EAAE,cAAgB,SAAS,MAAQ,iBAAiB,MAAQ,QAAQ;AAAA,MACtE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;;;ACxDA,iCAAC,MAAO,oBAAmB,KAAM,CAAC,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,CAAC,GAAE,SAAU,OAAM,iBAAkB,cAAa,MAAO,cAAa,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,MAAO,eAAc,MAAO,QAAO,GAAE,EAAC,UAAW,MAAK,QAAS,CAAC,GAAE,MAAO,kBAAiB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,SAAU,OAAM,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,UAAW,MAAK,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,SAAU,OAAM,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,UAAW,MAAK,QAAS,CAAC,GAAE,MAAO,kBAAiB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,SAAU,OAAM,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,UAAW,OAAM,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,cAAa,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,CAAC,GAAE,SAAU,OAAM,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,UAAW,MAAK,QAAS,CAAC,GAAE,MAAO,SAAQ,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,SAAU,OAAM,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,UAAW,MAAK,QAAS,CAAC,GAAE,MAAO,eAAc,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,SAAU,OAAM,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,UAAW,MAAK,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,MAAO,WAAU,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,SAAU,OAAM,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,UAAW,OAAM,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,GAAE,SAAU,OAAM,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,UAAW,OAAM,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,CAAC,GAAE,MAAO,kBAAiB,SAAU,CAAC,GAAE,SAAU,OAAM,iBAAkB,cAAa,MAAO,WAAU,CAAC,GAAE,WAAY,EAAC,KAAI,8CAA6C,SAAQ,8CAA6C,SAAQ,8CAA6C,SAAQ,6CAA4C,EAAC;;;ACAtmF,kCAAC,MAAO,qBAAoB,KAAM,CAAC,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,cAAa,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,QAAO,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,kBAAiB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,kBAAiB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,gBAAe,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,sBAAqB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,kBAAiB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,mBAAkB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,eAAc,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,CAAC,GAAE,iBAAkB,WAAU,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,WAAU,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,eAAc,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,CAAC,GAAE,MAAO,gBAAe,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,aAAY,MAAO,QAAO,MAAO,YAAW,CAAC,GAAE,MAAO,gBAAe,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,WAAU,MAAO,YAAW,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,aAAY,MAAO,QAAO,MAAO,YAAW,CAAC,GAAE,MAAO,iBAAgB,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,WAAU,MAAO,YAAW,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,SAAQ,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,mBAAkB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,kBAAiB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,sBAAqB,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,eAAc,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,kBAAiB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,mDAAkD,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,kBAAiB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,QAAO,MAAO,cAAa,MAAO,OAAM,GAAE,EAAC,cAAe,SAAQ,MAAO,KAAI,MAAO,QAAO,GAAE,EAAC,cAAe,WAAU,MAAO,KAAI,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,KAAI,MAAO,UAAS,CAAC,GAAE,MAAO,gCAA+B,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,eAAc,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,SAAQ,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,kBAAiB,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,QAAO,MAAO,cAAa,MAAO,OAAM,GAAE,EAAC,cAAe,SAAQ,MAAO,KAAI,MAAO,QAAO,GAAE,EAAC,cAAe,WAAU,MAAO,KAAI,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,KAAI,MAAO,UAAS,CAAC,GAAE,MAAO,6DAA4D,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,cAAa,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,QAAO,MAAO,cAAa,MAAO,OAAM,GAAE,EAAC,cAAe,SAAQ,MAAO,KAAI,MAAO,QAAO,GAAE,EAAC,cAAe,WAAU,MAAO,KAAI,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,KAAI,MAAO,UAAS,CAAC,GAAE,MAAO,6BAA4B,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,aAAY,MAAO,QAAO,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,yBAAwB,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,WAAU,MAAO,YAAW,CAAC,GAAE,iBAAkB,WAAU,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,cAAe,aAAY,MAAO,QAAO,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,yBAAwB,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,WAAU,MAAO,YAAW,CAAC,GAAE,iBAAkB,WAAU,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,cAAe,aAAY,MAAO,QAAO,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,sDAAqD,SAAU,CAAC,GAAE,iBAAkB,WAAU,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,cAAe,aAAY,MAAO,QAAO,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,yBAAwB,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,WAAU,MAAO,YAAW,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,cAAe,aAAY,MAAO,QAAO,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,sDAAqD,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,cAAe,aAAY,MAAO,QAAO,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,4BAA2B,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,WAAU,MAAO,YAAW,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,gBAAe,MAAO,UAAS,GAAE,EAAC,cAAe,aAAY,MAAO,QAAO,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,yDAAwD,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,eAAc,MAAO,UAAS,GAAE,EAAC,cAAe,aAAY,MAAO,QAAO,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,yBAAwB,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,WAAU,MAAO,YAAW,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,aAAY,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,eAAc,MAAO,UAAS,GAAE,EAAC,cAAe,aAAY,MAAO,QAAO,MAAO,YAAW,GAAE,EAAC,cAAe,WAAU,MAAO,MAAK,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,4BAA2B,SAAU,CAAC,EAAC,cAAe,aAAY,MAAO,WAAU,MAAO,YAAW,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,iBAAkB,WAAU,MAAO,UAAS,CAAC,GAAE,WAAY,EAAC,KAAI,8CAA6C,SAAQ,6CAA4C,EAAC;;;ACAzvX,oCAAC,MAAO,uBAAsB,KAAM,CAAC,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,cAAa,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,eAAc,SAAU,CAAC,EAAC,cAAe,SAAQ,MAAO,IAAG,MAAO,QAAO,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,SAAQ,MAAO,QAAO,MAAO,QAAO,CAAC,GAAE,MAAO,WAAU,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,OAAM,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,EAAC,cAAe,SAAQ,MAAO,SAAQ,MAAO,QAAO,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,UAAS,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,UAAS,SAAU,CAAC,EAAC,cAAe,qBAAoB,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,UAAS,SAAU,CAAC,EAAC,cAAe,uBAAsB,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,SAAQ,MAAO,QAAO,MAAO,QAAO,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,EAAC,cAAe,QAAO,MAAO,IAAG,MAAO,OAAM,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,CAAC,GAAE,WAAY,EAAC,KAAI,8CAA6C,KAAI,8CAA6C,MAAK,8CAA6C,OAAM,8CAA6C,QAAO,8CAA6C,SAAQ,8CAA6C,SAAQ,6CAA4C,EAAC;;;ACA9wD,6BAAC,MAAO,gBAAe,KAAM,CAAC,EAAC,QAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,cAAa,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,UAAS,MAAO,OAAM,MAAO,SAAQ,GAAE,EAAC,SAAU,MAAK,cAAe,SAAQ,MAAO,eAAc,MAAO,QAAO,CAAC,GAAE,MAAO,oBAAmB,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,YAAW,MAAO,UAAS,CAAC,GAAE,MAAO,gBAAe,MAAO,QAAO,GAAE,EAAC,WAAY,OAAM,QAAS,CAAC,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,SAAU,MAAK,cAAe,UAAS,MAAO,OAAM,MAAO,SAAQ,GAAE,EAAC,SAAU,OAAM,cAAe,SAAQ,MAAO,eAAc,MAAO,QAAO,GAAE,EAAC,SAAU,OAAM,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,CAAC,GAAE,MAAO,eAAc,MAAO,QAAO,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,UAAS,MAAO,OAAM,MAAO,SAAQ,CAAC,GAAE,MAAO,cAAa,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,QAAO,MAAO,UAAS,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,UAAS,MAAO,OAAM,MAAO,SAAQ,GAAE,EAAC,cAAe,SAAQ,MAAO,eAAc,MAAO,QAAO,CAAC,GAAE,MAAO,mBAAkB,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,UAAS,MAAO,IAAG,MAAO,SAAQ,CAAC,GAAE,MAAO,wBAAuB,SAAU,CAAC,EAAC,cAAe,SAAQ,MAAO,IAAG,MAAO,QAAO,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,GAAE,EAAC,cAAe,UAAS,MAAO,IAAG,MAAO,SAAQ,CAAC,GAAE,MAAO,WAAU,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,SAAQ,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,IAAG,MAAO,UAAS,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,GAAE,MAAO,cAAa,SAAU,CAAC,EAAC,cAAe,WAAU,MAAO,WAAU,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,GAAE,EAAC,cAAe,UAAS,MAAO,OAAM,MAAO,SAAQ,GAAE,EAAC,cAAe,SAAQ,MAAO,eAAc,MAAO,QAAO,CAAC,GAAE,iBAAkB,QAAO,MAAO,WAAU,GAAE,EAAC,QAAS,CAAC,EAAC,cAAe,WAAU,MAAO,UAAS,MAAO,UAAS,CAAC,GAAE,MAAO,YAAW,SAAU,CAAC,GAAE,iBAAkB,cAAa,MAAO,WAAU,CAAC,GAAE,WAAY,EAAC,KAAI,8CAA6C,KAAI,8CAA6C,MAAK,8CAA6C,OAAM,8CAA6C,QAAO,8CAA6C,SAAQ,8CAA6C,SAAQ,8CAA8C,UAAS,6CAA4C,EAAC;;;ACA/iG,4BAAC,MAAO,eAAc,KAAM,CAAC,GAAE,WAAY,EAAC,KAAK,8CAA6C,KAAI,8CAA6C,MAAK,8CAA6C,OAAM,8CAA6C,QAAO,8CAA6C,SAAQ,8CAA6C,SAAQ,6CAA4C,EAAC;;;ACAlZ,4BAAC,MAAO,eAAc,KAAM,CAAC,GAAE,WAAY,EAAC,KAAI,8CAA6C,KAAI,8CAA6C,MAAK,8CAA6C,OAAM,8CAA6C,QAAO,8CAA6C,SAAQ,8CAA6C,SAAQ,8CAA8C,UAAS,6CAA4C,EAAC;;;ACAxc;AAAA,EACE,MAAQ;AAAA,EACR,KAAO;AAAA,IACL;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,YAAc;AAAA,YACZ;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,YAAc;AAAA,YACZ;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,WAAa;AAAA,MACb,QAAU;AAAA,QACR;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,SAAW;AAAA,UACX,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR;AAAA,UACE,YAAc;AAAA,YACZ,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,YACjE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,YAChE,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D,EAAE,cAAgB,SAAS,MAAQ,YAAY,MAAQ,QAAQ;AAAA,YAC/D;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA,EAAE,cAAgB,SAAS,MAAQ,aAAa,MAAQ,QAAQ;AAAA,UAClE;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,QACrE,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ;AAAA,MACzD;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,WAAW,MAAQ,gBAAgB,MAAQ,UAAU;AAAA,MACzE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE;AAAA,UACE,YAAc;AAAA,YACZ;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,MACpE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,SAAS,MAAQ,SAAS,MAAQ,QAAQ;AAAA,MAC9D;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,OAAO,MAAQ,UAAU;AAAA,MAChE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,MAClE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,SAAS,MAAQ,oBAAoB,MAAQ,QAAQ;AAAA,MACzE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU;AAAA,QAC3D,EAAE,cAAgB,SAAS,MAAQ,IAAI,MAAQ,QAAQ;AAAA,QACvD,EAAE,cAAgB,SAAS,MAAQ,cAAc,MAAQ,QAAQ;AAAA,QACjE,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,MAClE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU,CAAC;AAAA,MACX,MAAQ;AAAA,MACR,SAAW,CAAC,EAAE,cAAgB,WAAW,MAAQ,IAAI,MAAQ,UAAU,CAAC;AAAA,MACxE,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,SAAS,MAAQ,UAAU;AAAA,MAClE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,SAAS,MAAQ,aAAa,MAAQ,QAAQ;AAAA,QAChE,EAAE,cAAgB,WAAW,MAAQ,cAAc,MAAQ,UAAU;AAAA,QACrE,EAAE,cAAgB,WAAW,MAAQ,UAAU,MAAQ,UAAU;AAAA,MACnE;AAAA,MACA,MAAQ;AAAA,MACR,SAAW;AAAA,QACT,EAAE,cAAgB,WAAW,MAAQ,gBAAgB,MAAQ,UAAU;AAAA,MACzE;AAAA,MACA,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,QAAU;AAAA,QACR,EAAE,cAAgB,WAAW,MAAQ,WAAW,MAAQ,UAAU;AAAA,QAClE;AAAA,UACE,YAAc;AAAA,YACZ;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,YACA;AAAA,cACE,cAAgB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,cAAgB;AAAA,UAChB,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,SAAW,CAAC;AAAA,MACZ,iBAAmB;AAAA,MACnB,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;;;ACjVA,SAAkB,0BAA6C;;;ACA/D,SAAkB,oBAAyB,YAA0B;;;ACArE,SAAgC,aAAa;;;ACA7C,IAAM,UAAU;AACT,IAAM,YAAN,cAAwB,MAAM;AAAA,EAGnC,YACS,UACA,MACA,MACP,KAEO,YACP,eACA,SACA,aAAa,OACb;AACA,UAAM,GAAG,GAAG;AAAA;AAAA,EAAO,aAAa;AAAA,QAAW,OAAO;AAAA,WAAc,OAAO,EAAE;AAVlE;AACA;AACA;AAGA;AAMP,QAAI,YAAY;AACd,WAAK,QAAQ;AAAA,IACf;AACA,SAAK,WAAW;AAChB,SAAK,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,EAC1C;AAAA,EAnBA;AAAA,EAqBA,UAAU;AACR,SAAK,WACH;AAAA,EACJ;AACF;;;AC3BA;AAAA,EACE,MAAQ;AAAA,IACN,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,OAAS;AAAA,IACP,MAAQ;AAAA,IACR,Y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",
|
|
6
|
+
"names": ["pad", "createWalletClient", "custom", "http", "isHex", "keccak256", "pad", "toBytes", "InvalidParameterError", "ErrorBaseType", "ErrorType", "ErrorCode", "Token", "decodeAbiParameters", "decodeAbiParameters", "Token", "encodeAbiParameters", "keccak256", "toBytes", "toHex", "toHex", "toBytes", "keccak256", "encodeAbiParameters", "uuidv4", "keccak256", "pad", "toBytes", "keccak256", "toBytes", "uuidv4", "pad", "isAddress", "isAddress", "Operation", "encodeAbiParameters", "pad", "encodeAbiParameters", "pad", "formatUnits", "isAddress", "parseUnits", "isAddress", "formatUnits", "parseUnits", "AuthType", "OperationType", "OperationStatus", "item", "InvalidParameterError", "toBytes", "mainnet", "gasSpecificChain", "createWalletClient", "custom", "http", "isHex", "toBytes", "pad", "keccak256", "decodeAbiParameters", "pad", "toBytes", "toBytes", "pad", "decodeAbiParameters", "concat", "keccak256", "padHex", "pad", "pad", "pad", "isAddress", "parseEther", "parseEther", "isAddress", "isAddress", "UniswapPoolFeeOptions", "SocketSort", "isAddress", "isAddress", "parseEther", "isAddress", "parseEther", "concat", "concat", "concat", "encodeAbiParameters", "concat", "encodeAbiParameters", "concat", "createPublicClient", "encodeAbiParameters", "http", "isAddress", "isHex", "keccak256", "pad", "toBytes", "pad", "concat", "decodeAbiParameters", "keccak256", "keccak256", "concat", "decodeAbiParameters", "FeeAmount", "encodeAbiParameters", "fees", "FeeAmount", "encodeAbiParameters", "pad", "isAddress", "isHex", "pad", "keccak256", "toBytes", "createPublicClient", "http", "Operation", "encodeAbiParameters", "concat", "feedata"]
|
|
7
|
+
}
|